Tbpgr Blog

Ruby プログラマ tbpgr(てぃーびー) のブログ

書籍 パーフェクトJava | スタックトレース

概要

Javaスタックトレースについて

Javaスタックトレース

以下の構文でStackTraceを取得出来ます。

Thread.currentThread().getStackTrace()

サンプルコード

1階層目

package perfect.trace;

public class TraceSample {
  public static void main(String[] args) {
    TraceSample2 trace2 = new TraceSample2();
    trace2.hoge();
  }
}

2階層目

package perfect.trace;

public class TraceSample2 {
  public void hoge() {
    TraceSample3 trace3 = new TraceSample3();
    trace3.hoge();
  }
}

3階層目

package perfect.trace;

public class TraceSample3 {
  public void hoge() {
    StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();
    for (StackTraceElement stack : stackTrace) {
      System.out.print(stack.getClassName() + "|");
      System.out.print(stack.getMethodName() + "|");
      System.out.print(stack.getFileName() + "|");
      System.out.println(stack.getLineNumber());
    }
  }
}

出力

java.lang.Thread|getStackTrace|null|-1
perfect.trace.TraceSample3|hoge|TraceSample3.java|5
perfect.trace.TraceSample2|hoge|TraceSample2.java|6
perfect.trace.TraceSample|main|TraceSample.java|6