このようなJavaScriptコードの場合:
try {
MyJob.process();
} catch(e) {
console.log("Exception occur!");
}
ChromeまたはFireFoxでコードを実行しました。例外が発生すると、「例外が発生しました!」の行番号が表示されます。コンソールに表示されますが、MyJobの元の例外は表示されません。例外が発生した元の位置を示し、ここに書いたtry-catchを維持する解決策はありますか?
このようなJavaScriptコードの場合:
try {
MyJob.process();
} catch(e) {
console.log("Exception occur!");
}
ChromeまたはFireFoxでコードを実行しました。例外が発生すると、「例外が発生しました!」の行番号が表示されます。コンソールに表示されますが、MyJobの元の例外は表示されません。例外が発生した元の位置を示し、ここに書いたtry-catchを維持する解決策はありますか?
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
try
およびを一時的にコメントアウトしてからcatch
、Chrome(またはFirefox)のJavaScriptデバッグツールを使用してステップスルーします。
//try {
MyJob.process();
/*} catch(e) {
console.log("Exception occur!");
}*/
問題を特定したら、コメントを削除して元のエラー処理を復元します。