web-dev-qa-db-ja.com

JavaScript例外処理-行番号の表示

JavaScriptで例外をキャッチ/処理する場合、例外が発生したときのコールスタックを確認するにはどうすればよいですか? (そして可能であれば行番号も)

try
{
    // etc...
}
catch (ex)
{
    // At this point here I want to be able to print out a detailed exception 
    // message, complete with call stack, and if possible line numbers.
}
25
Justin

ブラウザごとに処理が異なるため、普遍的な方法はありません。 このブログ投稿 サポートされているほとんどのブラウザのスタックトレースをダンプするための優れたコードがいくつかあります。行番号を提供する良い方法はないと思います。

特に1つの関数をデバッグする場合は、 Firebug に優れたスタックトレース関数があります(console.trace()に対して)。

16
Chris Clark

this を見てください。

利用可能な情報を分析する方法:

try 
{ 
    doInit(); 
} catch(err) 
{ 
    var vDebug = ""; 
    for (var prop in err) 
    {  
       vDebug += "property: "+ prop+ " value: ["+ err[prop]+ "]\n"; 
    } 
    vDebug += "toString(): " + " value: [" + err.toString() + "]"; 
    status.rawValue = vDebug; 
}
14
jldupont

IEで実行されているJavaScriptでは、例外がキャッチされた時点でスタックトレースをキャプチャできないことを発見しました。 this PDFによると、IEでスタックトレースを取得する唯一の方法は、例外を処理しない場合です。

1
Justin