getCause

まあわざわざ残すこともない気はするけど、結構良く使うので。
最初に発生したエラーの取得。


リフレクションなんか使ってると、呼び出したメソッドの中でエラーが起きると呼び出した側ではInvocationTargetExceptionだか何だかというエラーになる。
エラー処理の仕方にもよるけど、Exception#getMessage()をログに出力するだけなんていうプロジェクトはよくある。
一部分だけスタックトレースを出力するなんてわがままは通らない。
でもInvocationTargetExceptionのメッセージなんてログに出力したって何の意味もないので、最初に発生したエラーのgetMessage()を呼び出すようになった。

public static Throwable getCause(Throwable t) {
    while (t.getCause() != null) {
        t = t.getCause();
    }
    return t;
}