2011年01月30日

スタックトレースを文字列として取得

Javaで例外が発生した場合に、そのスタックトレース(printStackTrace()で
標準出力するような情報)をログファイルに出力したいことがありまして、

ただ、ExceptionのメソッドでスタックトレースをStringとして直接取得する
メソッドが無いようなので、以下のgetStackTraceメソッドを作成してみました。

===

package example;

public class Sample001 {

public static void main(String[] args) {
try {
Integer.parseInt("a");
} catch (NumberFormatException e) {
System.out.println(getStackTrace(e));
}
}

public static String getStackTrace(Exception e) {
StackTraceElement[] list = e.getStackTrace();
String rtn = e.getClass() + ":" + e.getMessage() + "\n";
for( StackTraceElement s : list ) {
rtn += s.toString() + "\n";
}
return rtn;
}

}

【実行結果】
class java.lang.NumberFormatException:For input string: "a"
java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
java.lang.Integer.parseInt(Integer.java:447)
java.lang.Integer.parseInt(Integer.java:497)
example.Sample001.main(Sample001.java:11)
posted by 台北猫々 at 16:41| Comment(3) | TrackBack(0) | 技術メモ(Java)