Eclipse デバッガーは、メソッドの最後に現在の命令ポインターがある例外で停止することがあります。現時点では、デバッグ ビューに「スレッド... (一時停止 (例外 ...))」と表示されます。
例外がスローされた場所で停止しないのはなぜですか?
これらの例外を調べる方法は? メッセージとスタック トレースを表示するには?
Javaで例外がスローされると、スタックトレースをずっと上に移動して、例外をキャッチする可能性のあるものを見つけようとするため、停止しません。Eclipseは、JVMがスタックトレースの最後の要素に到達したときにのみスレッドを停止するため、例外は「未処理」の領域に入ります。現時点では、Eclipseからスタックトレースを直接取得する方法について、Eclipseに固有の情報は見つかりませんでした。ここで例外への参照はありません。J!を使用して例外ブレークポイントを使用できます。「ブレークポイント」ビューのアイコンを使用すると、特定の種類の例外がスローされたときに停止します。これにより、必要なものを取得できます。
UncaughtExceptionHandler
このようなキャッチされない例外を処理するカスタムを追加することをお勧めします。例えば:
Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
public void uncaughtException(Thread t, Throwable e) {
// Replace the following line with your own handling code
e.printStackTrace();
ErrorHelper.showDetailError(e);
}
});
例外がスローされた場所でデバッガーを停止させることができます。
デバッグパースペクティブの[ブレークポイント] タブで、[J!] をクリックします。上部のアイコン。例外を入力します。ブレークポイントのリストに表示されます。
キャッチされない例外、キャッチされた例外、またはその両方でデバッガーを停止するかどうかを構成できます。
これは、NullPointerExceptions の場合に特に役立ちます。
Why it doesn't stop at exception throw place?
コードをステップ オーバーしている場合は、そのコード内でスローされている例外もステップ オーバーしています。
How to inspect these exception? To see their messages and stack traces?
DebugパースペクティブのVariablesビューで例外を調べることができます。