协慌网

登录 贡献 社区

在 Java 中获取当前堆栈跟踪

如何在 Java 中获取当前的堆栈跟踪,比如在.NET中如何使用Environment.StackTrace

BTW, Thread.dumpStack()不是我想要的 - 我希望得到堆栈跟踪 ,而不是打印出来。

答案

您可以使用<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html" rel="noreferrer">Thread</a> .currentThread().getStackTrace()

返回一个StackTraceElement数组,表示程序的当前堆栈跟踪。

Thread.currentThread().getStackTrace();

如果您不关心堆栈的第一个元素是什么,那就没问题。

new Throwable().getStackTrace();

如果这很重要,将为您当前的方法定义一个位置。

for (StackTraceElement ste : Thread.currentThread().getStackTrace()) {
    System.out.println(ste);
}