134

アプリケーションで未処理の JavaScript 例外をすべて警告ボックスに表示する方法を見つけようとしています。サーバー側のコードを使用せずに、これらすべてをクライアント側で実行したいと思います。環境としてMVC3を使用しています。

私はここ数日間調査してきましたが、探しているものを正確に見つけられませんでした.

以下の 2 つの方法を見つけましたが、これらの方法は、関数名をカスタム メソッドに渡して、そのメソッド内のすべての未処理の例外のスタック トレースを出力する必要があるように設定されていることを除いて、私が探しているものとほとんど同じです。特定の機能。すべての未処理の例外のスタック トレースを出力するカスタム メソッドに関数名を手動で渡す必要がないようにする方法を探しています。これらのカスタム メソッドが、アプリケーション全体で未処理の例外をすべて「リッスン」するようにしたいと思います。

http://eriwen.com/javascript/js-stack-trace/

また、前のリンクに似たもの:

https://github.com/eriwen/javascript-stacktrace

上記の 2 番目のリンクの基本的なコードは、指定された JavaScript 関数のスタック トレースを出力します。

instrumentFunction: function (context, functionName, callback) {
    context = context || window;
    var original = context[functionName];
    context[functionName] = function instrumented() {
        callback.call(this, printStackTrace().slice(4));
        return context[functionName]._instrumented.apply(this, arguments);
    };
    context[functionName]._instrumented = original;
}

function printStackTrace(options) {
    options = options || {
        guess: true
    };
    var ex = options.e || null,
        guess = !! options.guess;
    var p = new printStackTrace.implementation(),
        result = p.run(ex);
    return (guess) ? p.guessAnonymousFunctions(result) : result;
}

これをまとめると、何らかの「リスナー」がすべての JavaScript 未処理の例外をリッスンし、それらを画面の警告ボックスに出力する方法を知っていますか?

ありがとう!ジェイソン

4

4 に答える 4

149

window.onerror メソッドを使用してこれを行うことができます。

window.onerror = function myErrorHandler(errorMsg, url, lineNumber) {
    alert("Error occured: " + errorMsg);//or any message
    return false;
}
于 2013-04-24T07:28:49.483 に答える
59

window.onerrorまたは (驚くべきことに!) 「エラー」イベントに適切にバインドできます。

window.onerror = function (message, file, line, col, error) {
   alert("Error occurred: " + error.message);
   return false;
};
window.addEventListener("error", function (e) {
   alert("Error occurred: " + e.error.message);
   return false;
})

JavaScript エラーを追跡したい場合は、Atatusを試すことができます。私はアタタスで働いています。

于 2016-06-09T11:21:01.740 に答える