VS Code异常断点能在代码抛出错误瞬间暂停执行,通过调试视图中“异常断点”区域勾选“所有异常”或“未处理的异常”启用,可拦截throw错误和未捕获Promise拒绝,但对SyntaxError无效。

VS Code 的异常断点能让你在代码抛出错误的瞬间暂停执行,比等程序崩溃后再查堆栈更高效。关键不是等错误出现,而是让调试器提前“拦截”它。
什么是异常断点
它不是设在某一行代码上,而是监听 JavaScript(或 Node.js)运行时抛出的异常。只要代码中 throw 了错误,或者发生了未捕获的 Promise 拒绝(unhandled rejection),调试器就会立即中断,并高亮出错位置。
如何启用异常断点
打开 VS Code 调试视图(Ctrl+Shift+D 或 Cmd+Shift+D),在“断点”面板底部找到:
- “异常断点” 区域,勾选 “所有异常”(捕获所有 throw)
- 或勾选 “未处理的异常”(只停在没被 try/catch 或 .catch() 捕获的错误)
- 也可以点击 “+” 添加特定异常类型,比如 TypeError 或 ReferenceError
常见场景与建议
很多问题其实藏在异步链里——比如 fetch 失败后没处理 reject,或者 setTimeout 里抛错被吞掉。这时候启用“未处理的异常”最实用:
- Promise 链中漏写 .catch()?调试器会直接停在 reject() 那行
- async 函数里 throw new Error() 没被外层 try 包住?立刻中断
- 想专注某类错误?比如只关心网络相关异常,就添加 TypeError 或自定义错误类名
注意几个细节
异常断点依赖调试配置正常启动(如 launch.json 中 "type": "pwa-node" 或 "pwa-chrome")。它对语法错误(SyntaxError)无效——那类错误发生在解析阶段,调试器还来不及介入。另外,已用 try/catch 捕获的异常默认不会中断,除非你额外勾选“所有异常”。
基本上就这些。开个断点,跑起来,错误一冒头就抓住,比翻日志快得多。










