Java StringWriterクラスを使って、スタックトレースを文字列で取得する




とりあえずバグったら困ったら見るものといえば、スタックトレース。
ログファイルを見て確認してみたり、ちょっとしたプログラムだったらコンソールで確認してみたり・・で済むんですが。。
特定の場所だけ見たかったり、見やすいように整形したかったりして、文字列で欲しくなることがあります。

そんなときは、StringWriterクラスを使って、スタックトレースを文字列にしてしまいましょう。

StringWriterクラスを使って、スタックトレースを文字列で取得するサンプル

実行結果

サンプルの解説

Exception#printStackTrace(PrintWriter)で、指定したストリームに出力することができます。
これを使って、StringWriterに流し込みます。
流し込んだスタックトレースは、StringWriter#toString()にて、文字列として取得することができます。

ちなみに、すぐに例外を出しても面白くないと思ったので、test1~test3まで無意味に呼び出してから例外を投げてますw