window.onerror在Chrome中不起作用

window.onerror not working in chrome

我正在尝试向我的网站添加onerror事件。

1
2
3
window.onerror = function() {
    alert("an error");
}

但是我收到的是:

1
2
notThere();
ReferenceError: notThere is not defined

我想念什么?

浏览器:Chrome 26.0.1410.64 m

复制步骤:

  • 将代码添加到控制台。
  • 将notThere()添加到控制台

当控制台直接生成错误时,不会触发

window.onerror。它可以通过setTimeout触发,例如setTimeout(function() { notThere(); }, 0);

可能的重复项:Chrome:从开发者控制台调用的代码中的错误会触发window.onerror吗?


window.onerror可在Chrome中运行(请参阅jsfiddle-http://jsfiddle.net/PWSDF/),但显然不能在控制台中使用-这是有道理的。


您可能无法处理window.onerror中的错误的其他一些原因(除了提到的那些):

  • 另一个库在您之后设置window.onerror
  • 如果您使用的是Angular,则错误不会通过window.onerror传递。您必须使用以下工厂来处理它们:

    1
    2
    3
    4
    5
    6
        .factory('$exceptionHandler', function() {
            return function errorCatcherHandler(exception, cause) {
                console.error(exception);
                if (window.OnClientError) window.OnClientError(exception);
            };
        })

请参阅:

https://docs.angularjs.org/api/ng/service/$exceptionHandler

http://bahmutov.calepin.co/catch-all-errors-in-angular-app.html