IE 8 で JavaScript 例外がスローされた場合、そのスタック トレースを確認するにはどうすればよいですか?
たとえば、jQuery からの次のコードは、例外をキャッチして再スローします。Visual Studio (2012) でデバッグすると、例外 ('e') が jQuery によってキャッチされると実行が中断されますが、例外の発生元のスタック トレースを確認することはできません。
// resolve with given context and args
resolveWith: function( context, args ) {
if ( !cancelled && !fired && !firing ) {
firing = 1;
try {
while( callbacks[ 0 ] ) {
callbacks.shift().apply( context, args );
}
}
// We have to add a catch block for
// IE prior to 8 or else the finally
// block will never get executed
catch (e) {
throw e;
}
finally {
fired = [ context, args ];
firing = 0;
}
}
return this;
}
stacktrace.jsライブラリを試してみましたが、ブラウザーが IE 8 の場合は例外を無視するようで、現在のフレームのスタック トレースを生成するようにフォールバックするだけです。
編集:
以下のスクリーンショットからわかるように、例外にはスタックに関連するプロパティがありません。