Error handling 在Aurelia/Bluebird promise中如何在应用程序启动之前/期间处理全局错误

Error handling 在Aurelia/Bluebird promise中如何在应用程序启动之前/期间处理全局错误,error-handling,promise,aurelia,bluebird,raygun.io,Error Handling,Promise,Aurelia,Bluebird,Raygun.io,我正在将Raygun错误处理添加到我的Aurelia应用程序中,刚刚意识到我无法捕获在应用程序安装过程中发生的错误(例如在main.configure) 下面的代码根本不使用Raygun,只是尝试捕获所有错误: index.html <!DOCTYPE html> <html> <head> <!-- ... --> </head> <body aurelia-app="main"> <script src=

我正在将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>
。。。我猜它来自蓝鸟

如何可靠地捕获应用程序中的所有错误


以下是记录的错误的屏幕截图:

  • vendor bundle.js:3411
    导致上述
    tryCatcher
  • app bundle.js:72:9
    (stacktrace中的第一个条目)导致实际错误行
    blah.this=3
  • 蓝鸟
    未处理的弹射
    拒绝处理
    在此场景中不会被激发

它是如何作为“未处理的拒绝”记录在控制台中的?@Bergi我添加了一个记录错误的屏幕截图。它不会被记录为未处理的拒绝。我已经尝试捕捉蓝鸟
未处理的喷射
拒绝处理
,它们在我上面的场景中没有被激发。嗯,奇怪。在加载捆绑包之前,可能需要设置
窗口.onerror
处理程序?在捆绑包加载程序之前移动设置
onerror
处理程序的脚本也不起作用。我还检查了
onerror
处理程序在错误发生之前是否已实际安装。
// ...
export function configure(aurelia: Aurelia) {
    aurelia.use
        .standardConfiguration()
        .feature('resources');

    // ...

    blah.this = 3; // <-- Force some error...
}
function tryCatcher() {
    try {
        var target = tryCatchTarget;
        tryCatchTarget = null;
        return target.apply(this, arguments);
    } catch (e) {
        errorObj.e = e;
        return errorObj;
    }
}