5

Chrome では、例外が発生すると、スタック トレースがコンソール ログに出力されます。これは非常に便利ですが、残念ながら、例外が再スローされた場合に問題が発生します。

} catch (e) {
    if (foo(e)) {
        // handle the exception
    } else {
        // The stack traces points here
        throw e;
    }
}

残念ながら、次のコードにより、jQuery.jsすべての例外がイベント ハンドラー内からのものである場合に、この問題が発生します。

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;
}

throw e;同じスタック トレースで例外が再スローされるように変更する方法はありますか?

4

2 に答える 2

2

これはChrome の既知のバグであり、残念ながら私が認識している回避策はありません。

于 2011-03-09T17:52:35.140 に答える
1

最善の方法は、元のスタックを取得して印刷することです。これを単体テストツールで使用します。

try{
  ...
}
catch(e){
    console.log(e.stack);
    console.log(e.message);
    throw(e);
}
于 2016-04-12T13:50:01.687 に答える