2011-10-19 7 views
1

これはEclipseでデバッグするときの小さな問題です。 「キャッチされていない例外の実行を中断する」がチェックされていると、デバッガは通常、例外がスローされた場所のスレッドを一時停止します。ただし、Event Dispatch Threadの例外は、EventDispatchThread.run()の最後の行で一時停止させます。スタックトレースをコンソールに出力できるようにスレッドを再開するまで、例外が何であるか、何が原因で発生したかについての有益な情報はありません。Eclipse/Java:EDT上でキャッチされない例外がEventDispatchThread.run()で実行を中断しました。

デバッグ証明するEclipseで、次のコード:

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

そして、ここでは、それは例外がスローされた後、次のようになります。

Suspended at EventDispatchThread.run() EDIT 2011年10月21日:私は推測しますEclipseやJavaデバッガで何か不思議なことはありませんが、例外はEventDispatchThread.pumpOneEventForFilters(int)で捕捉されて再スローされただけです。私は、Eclipseに「捕まえられ、おそらく再スローされる予定の例外に対する実行を中断する」ように指示する方法はないと考えています。残念な。

答えて

0

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

1

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

+0

おそらく問題はJPDAであるとEclipseない、NetBeansは同様に作用することを知っておくと便利です。提案に感謝しますが、キャッチされていない例外ハンドラでも同じ刺激的な動作があります。 – kylewm

0

私はこの問題を抱え、私のために役立つものを見つけました。

私はKeplerを使用しており、デバッガパースペクティブのブレークポイントタブに移動し、EventDispatchThreadのチェックボックスを選択解除することでこれを停止できました。

enter image description here

関連する問題