如何在Chrome中调试‘Uncaught (in promise)’异常?
解决Promise异常未触发DevTools断点的问题
原因
Promise内部抛出的异常会被自身的错误处理机制接管——哪怕你没写显式的catch,浏览器也会隐式捕获并处理,这就导致普通的「Pause on caught exceptions」「Pause on uncaught exceptions」断点不会触发,因为这两个断点针对的是同步代码的异常捕获逻辑,而非Promise异步微任务的异常。
解决方法
在DevTools的Sources面板操作:
- 打开Breakpoints侧边栏
- 点击侧边栏右上角的
+按钮 - 输入以下断点关键词之一,按回车确认添加:
unhandledrejection:针对没有被任何catch处理的Promise异常rejectionhandled:针对被catch处理过的Promise异常
添加完成后,当Promise抛出异常时,调试器会直接在异常抛出的代码行中断,不管是否有显式的catch处理。
注意事项
- 如果代码中存在全局的
unhandledrejection事件监听(比如window.addEventListener('unhandledrejection', ...)),建议暂时禁用,避免影响断点触发。 - 确保浏览器版本较新(Chrome 60及以上),旧版本对Promise异常断点的支持不完善。
内容的提问来源于stack exchange,提问作者LOST
相关产品推荐
相关产品推荐

