我已将Raygun错误处理添加到我的Aurelia应用程序中,并意识到我无法捕获应用程序设置期间发生的错误(例如在main.configure
内)。
这里的代码根本没有使用Raygun,只是试图捕获所有错误:
的index.html
<!DOCTYPE html>
<html>
<head>
<!-- ... -->
</head>
<body aurelia-app="main">
<script src="build/res/vendor-bundle.js" data-main="aurelia-bootstrapper"></script>
<script type="text/javascript">
window.onerror = function() {
console.info('arguments:', arguments);
}
</script>
</body>
</html>
main.ts
// ...
export function configure(aurelia: Aurelia) {
aurelia.use
.standardConfiguration()
.feature('resources');
// ...
blah.this = 3; // <-- Force some error...
}
错误记录在控制台中,但我的索引文件中的onerror
处理程序未被调用。此外,Aurelias内部ConsoleAppender.Error
未被调用,因为我猜它在此阶段未配置/激活。
在开发工具中跟踪堆栈跟踪后,我将看到这段代码......
function tryCatcher() {
try {
var target = tryCatchTarget;
tryCatchTarget = null;
return target.apply(this, arguments);
} catch (e) {
errorObj.e = e;
return errorObj;
}
}
...我猜这来自Bluebird
...
如何可靠地捕获应用中的所有错误?
以下是已记录错误的屏幕截图:
vendor-bundle.js:3411
会导致上面提到的tryCatcher
app-bundle.js:72:9
(stacktrace中的第一个条目)导致实际错误行blah.this = 3
unhandledRejection
&amp;在此方案中,rejectionHandled
events未被解雇...