未処理のJavaScript例外をログに記録しようとしています。例外がキャッチされないときに発生するイベントはありますか?ブラウザでjavascriptエラーが発生する前に例外をキャッチしようとしていますが、try/catch内でアプリケーション全体を実行したくありません。どんな助けでもいただければ幸いです。ありがとう!
更新:tvanfossonはonerrorを可能性として指摘しました。これは仕様の一部ではなく、IEまたはGeckoベースのブラウザーでのみ使用できます。
OnErrorサポートテーブル- http://www.quirksmode.org/dom/events/error.html
Mozillaのドキュメント- https://developer.mozilla.org/en/DOM/window.onerror
WebKitバグレポート- https://bugs.webkit.org/show_bug.cgi?id=8519
Onerrorハンドラーを使用してみてください。 Docs MDNから。これにより、エラーが検出されたときに何かを実行できますが、try/catchブロックのように適切な方法で続行することはおそらくできません。これが処理される方法には、間違いなくブラウザ間の違いがあることに注意してください。
このフィドルをチェックしてください:
window.onerror = function (msg, url, line) {
console.log("Caught[via window.onerror]: '" + msg + "' from " + url + ":" + line);
return true; // same as preventDefault
};
window.addEventListener('error', function (evt) {
console.log("Caught[via 'error' event]: '" + evt.message + "' from " + evt.filename + ":" + evt.lineno);
console.log(evt); // has srcElement / target / etc
evt.preventDefault();
});
throw new Error("Hewwo world. I crash you!!!");
throw new Error("Hewwo world. I can only crash you once... :(");
どの印刷物:
キャッチ[window.onerror経由]: 'キャッチされていないエラー:Hewwoの世界。私はあなたをクラッシュさせます!!!」 http://fiddle.jshell.net/xYsRA/1/show/:32fiddle.jshell.net:21 Caught[via'error 'event]:' Uncaught Error:Hewwoworldから。私はあなたをクラッシュさせます!!!」 http://fiddle.jshell.net/xYsRA/1/show/:32fiddle.jshell.net:26 ErrorEvent{lineno:32、filename: "http://fiddle.jshell.net/ xYsRA/1/show/"、メッセージ:" Uncaught Error:Hewwoworld。Icrashyou !!! "、clipboardData:undefined、cancelBubble:false…} fiddle.jshell.net:27\
ノート:
「returntrue」/「evt.preventDefault()」行を削除すると、エラーがログに記録された後、通常の方法でJSコンソールに出力されます。
上記のステートメントとは異なり、window.onerrorはテストしたすべてのブラウザーで機能しました。ただし、addEventListenerメソッドはおそらくとにかく優れており、より豊富なセマンティクスを提供します。