开启浏览器错误断点可精准定位异常源头:勾选Sources面板的Pause on exceptions(含Caught/Uncaught),启用Promise rejection断点,并添加unhandledrejection全局监听,实现第一现场暂停调试。

在浏览器中开启错误断点,核心是让 DevTools 在 JavaScript 抛出异常(无论是否被 catch)时自动暂停执行,从而精准定位问题源头。
开启未捕获异常断点
这是最常用、最直接的方式,适用于 Uncaught (in promise) Error 或普通未处理错误:
- 打开 Chrome DevTools(F12 或 Cmd+Opt+J)→ 切换到 Sources 面板
- 右上角点击三个点 → Settings → 勾选 Pause on exceptions
- 确保下方两个选项都启用:
• Caught exceptions(捕获过的异常也暂停,便于检查 try/catch 内部逻辑)
• Uncaught exceptions(未捕获的异常必停)
专门捕获 Promise 拒绝
Promise 的 reject 若没被 catch 或 try/catch 捕获,会以“unhandledrejection”形式静默失败,需额外设置:
- 在 Sources 面板左侧,展开 Event Listener Breakpoints
- 找到并勾选 Promise → Promise rejection
- 此时每个未被处理的 reject 都会高亮中断,并直接跳转到
throw或Promise.reject()那一行
补充:全局兜底监听(开发阶段推荐)
为防止某些环境或框架屏蔽了默认行为,可在代码开头加一句:
你接手一个需求时,是不是经常这样:"改一个小字段 → 结果把不相关的代码也改了"、"需求说得很模糊 → 做着做着发现跑偏了"、"数据库加个字段 → 上线才发现漏了数据兼容"、"做了个新功能 → 一个月后自己都忘了当时怎么设计的"、"写到一半被中断 → 再回来不知道从哪继续";这个 Skill 就是专门解决这些问题的。 它会自动探测你的项目环境(JDK、Spring Boot、ORM、数据库、前端框架),记在
立即学习“Java免费学习笔记(深入)”;
window.addEventListener('unhandledrejection', e => { debugger; });
只要发生未处理的 Promise 错误,且开发者工具开着,就会强制触发断点。
注意:别只依赖 console 看报错
控制台红色错误信息容易被刷屏覆盖,尤其在快速请求或循环中。开启异常断点后,程序会在错误发生的**第一现场暂停**,你能立刻看到调用栈、作用域变量、甚至上一步的异步链路(需同时开启 Enable async stack traces)。

















