web-dev-qa-db-ja.com

window.onerrorはchromeで動作しません

Onerrorイベントを自分のWebサイトに追加しようとしています。

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

しかし、私が受け取るすべては:

notThere();
ReferenceError: notThere is not defined

私は何が欠けていますか?

ブラウザ:Chrome 26.0.1410.64 m

再現する手順:

  • コードをコンソールに追加します。
  • コンソールにnotThere()を追加します
33
Dinkheller

window.onerrorはChrome(jsfiddle- http://jsfiddle.net/PWSDF/ を参照)で動作しますが、明らかにコンソールでは動作しません。

32
Lachezar

コンソールが直接エラーを生成する場合、window.onerrorはトリガーされません。 setTimeoutを介してトリガーできますが、たとえばsetTimeout(function() { notThere(); }, 0);

重複の可能性: Chrome:開発コンソールから呼び出されたコードのエラーはwindow.onerrorをトリガーしますか?

49
wrschneider

window.onerrorのエラーを処理できない可能性がある他のいくつかの理由(言及したものを除く):

  • 別のライブラリがwindow.onerrorを設定します。
  • Angularを使用している場合、エラーはwindow.onerrorを通過しません。このファクトリを使用してそれらを処理する必要があります。

        .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

20
NoOne