1

これは、Eclipseでデバッグするときに私が抱える小さな煩わしさです。[キャッチされなかった例外で実行を一時停止する]をオンにすると、デバッガーは通常、例外がスローされた場所でスレッドを一時停止します。ただし、イベントディスパッチスレッドの例外により、EventDispatchThread.run()の最後の行で一時停止します。スタックトレースをコンソールに出力できるようにするためにスレッドを再開するまで、例外が何であるか、または何が原因であるかについての有用な情報はありません。

Eclipseで次のコードをデバッグして、次のことを示します。

public class SuspendOnUncaughtTest {
    public static void main(String[] args) {
        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                ((Object) null).toString();
            }
        });
    }
}

そして、例外がスローされた後の様子は次のとおりです。

EventDispatchThread.run()で一時停止 2011年10月21日編集: EclipseまたはJavaデバッガーでは何も奇妙なことは起こっていないと思います。それは、EventDispatchThread.pumpOneEventForFilters(int)で例外がキャッチされて再スローされるだけです。Eclipseに「キャッチされて再スローされる可能性のある例外の実行を一時停止する」ように指示する方法はないと思います。残念な。

4

3 に答える 3

1

NeteBeansでも同様の結果が表示されますがThread.setDefaultUncaughtExceptionHandler()、このコンテキストで役立つ場合があります。ここに例があります。

于 2011-10-19T19:45:22.987 に答える
0

私の知る限り、これに対する解決策はありません。Eclipseは正しく動作していますが、正しい動作は煩わしいだけです。

于 2011-10-25T01:02:26.433 に答える
0

私はこの問題を抱えていて、私のために働く何かを見つけました。

私はKeplerを使用していますが、デバッガーパースペクティブの[ブレークポイント]タブに移動し、EventDispatchThreadのチェックボックスをオフにすることでこれを停止できました。

ここに画像の説明を入力してください

于 2014-01-28T18:14:35.493 に答える