为什么我的JavaScript Error监控没有捕获到Promise中的错误?

Air-光星 阅读 60

我给window绑定了onerror和onunhandledrejection,但发现Promise里的reject错误没有被监控到。比如这个代码:

window.onerror = (msg, url, line) => {
  console.log('捕获到错误:', msg); // 这里没输出
};

Promise.reject('测试错误').catch(() => {}); // 我故意没处理这个catch

我原本以为未处理的Promise.reject会被onunhandledrejection抓到,但即使移除.catch()还是没触发。是不是这两个监听器的使用顺序有问题?或者Promise错误需要单独配置?

我来解答 赞 11 收藏
二维码
手机扫码查看
1 条解答
Top丶纳利
window.onunhandledrejection 只捕获未处理的 Promise 错误,但你的 .catch() 已经算处理过了。如果想测试,去掉 .catch() 就行。

正确示例:
window.onunhandledrejection = (event) => {
console.log('捕获到未处理的 Promise 错误:', event.reason);
};

Promise.reject('测试错误'); // 别加 catch


就这样。
点赞 2
2026-01-30 09:31