【发布时间】:2021-08-07 13:03:56
【问题描述】:
我们想用 JavaScript 捕捉这两个错误
ERROR TypeError: Cannot read property 'big' of undefined
at t.brokenCode (main.6e3ef82a1a9a4d77938a.js:1)
at main.6e3ef82a1a9a4d77938a.js:1
at Uo (main.6e3ef82a1a9a4d77938a.js:1)
at s (main.6e3ef82a1a9a4d77938a.js:1)
at HTMLButtonElement.<anonymous> (main.6e3ef82a1a9a4d77938a.js:1)
at l.invokeTask (polyfills.00096ed7d93ed26ee6df.js:1)
at Object.onInvokeTask (main.6e3ef82a1a9a4d77938a.js:1)
ERROR Error: Uncaught (in promise): TypeError: Cannot read property 'big' of undefined
TypeError: Cannot read property 'big' of undefined
at t.brokenCode (main.6e3ef82a1a9a4d77938a.js:1)
at t.n (main.6e3ef82a1a9a4d77938a.js:1)
at next (<anonymous>)
at main.6e3ef82a1a9a4d77938a.js:1
at new C (polyfills.00096ed7d93ed26ee6df.js:1)
at t.brokenAsyncCode (main.6e3ef82a1a9a4d77938a.js:1)
at main.6e3ef82a1a9a4d77938a.js:1
at Uo (main.6e3ef82a1a9a4d77938a.js:1)
at s (main.6e3ef82a1a9a4d77938a.js:1)
at HTMLButtonElement.<anonymous> (main.6e3ef82a1a9a4d77938a.js:1)
at Z (polyfills.00096ed7d93ed26ee6df.js:1)
我们正在使用事件处理程序来捕获这些错误,如下所示
window.addEventListener('error', function (event) {
console.log("error"+event);
});
window.addEventListener('unhandledrejection', function (event) {
console.log("unhandledrejection"+event);
});
但是这两个错误不会触发这些事件, 那么我们如何捕捉这些错误呢?
我们有这两个功能:
brokenCode(): void {
const something = 'DataInfo';
const bar = something + 0;
bar.toString()[33].big();
}
async brokenAsyncCode(): Promise<void> {
return Promise.resolve(this.brokenCode());
}
注意: 角度版本:12
由于 Zone.js,事件侦听器无法捕获角度 Jserror 因为 zone js 已经修改了事件监听器来实现 angular 的变化检测。
所以我在加载区域js之前尝试将错误事件列入黑名单, 但仍然无法使用事件侦听器捕获错误...
我们只想使用任何事件处理程序来处理这些错误。
谢谢...
【问题讨论】:
-
看起来您可能会产生这些错误(
brokenCode和brokenAsyncCode) - 请提供相关代码 -
window.addEventListener('unhandledrejection'可能 -
“unhandledrejection”事件也不会触发这两个错误
-
您确定错误发生在与您尝试捕获它的位置相同的文档中吗?不在框架或工人中?最好的方法当然是正确管理您使用的每个承诺的错误......
标签: javascript angularjs typeerror addeventlistener angular-promise