0

このようなJavaScriptコードの場合:

try {
    MyJob.process();
} catch(e) {
    console.log("Exception occur!");
}

ChromeまたはFireFoxでコードを実行しました。例外が発生すると、「例外が発生しました!」の行番号が表示されます。コンソールに表示されますが、MyJobの元の例外は表示されません。例外が発生した元の位置を示し、ここに書いたtry-catchを維持する解決策はありますか?

4

2 に答える 2

2
window.onerror = function ( msg, url, num ) {
   alert ( "Error: " + msg + "\nURL: " + url + "\nLine: " + num );
   return true;
};

これにより、ほとんどのエラーが表示されます。

catchブロックに以下を追加します。

catch(e) {
    console.log( e.name + ": " + e.message );
}

JavaScriptkitでのエラー処理の詳細

arguments.callee try / catchブロックが関数内にある場合は、 mdnmsdn を利用できます

function foo() {
    try {
        someFunction();
    }
    catch (e) {
        var f = arguments.callee.toString().substr ( "function ".length);
        f = f.substr(0, f.indexOf('('));
        alert ( "Error type : " + e.name + "\nError : " + e.message + "\nIn function : " + f );
    }
}

結果は次のようになります。

Error type : ReferenceError
Error : someFunction is not defined
In function : foo
于 2013-01-05T06:02:56.853 に答える
0

tryおよびを一時的にコメントアウトしてからcatch、Chrome(またはFirefox)のJavaScriptデバッグツールを使用してステップスルーします。

//try {
    MyJob.process();
/*} catch(e) {
    console.log("Exception occur!");
}*/

問題を特定したら、コメントを削除して元のエラー処理を復元します。

于 2013-01-05T06:00:44.083 に答える