例外チェーン chained exception
例外チェーンとは、例外にメッセージ追記 → throw してあげることです。
具体的にはこんな感じ。
try{ String a = null; a.trim(); } catch (NullPointerException nullEx) { Exception e = new Exception("完了処理メッセージの構築失敗"); e.initCause(nullEx); throw e; } // 結果 Exception in thread "main" java.lang.Exception: 完了処理メッセージ構築の失敗 at ExceptionChain.main(ExceptionChain.java:8) Caused by: java.lang.NullPointerException at ExceptionChain.main(ExceptionChain.java:6)
上記のようにすることで、stackTraceに「完了処理メッセージの構築失敗」という文言が追記されます。で、「原因がヌルポですよ」という具合。
ちなみに、例外チェーンをしないで、そのまま throw すると、NullPointerExceptionだけが表示されます。
Exception in thread "main" java.lang.NullPointerException at ExceptionTest.main(ExceptionTest.java:5)
例外チェーンの方が原因がわかりやすいですね。
SampleCodeがいまいちなので、ピンと来ないかもしれませんが、例外処理の基本らしいので、抑えておきましょう。
1.5から使えるようになったみたいです。参考
ちなみに、基本的に 例外は握りつぶしてはいけません。
エラーに気付けないし、デバッグ大変です。