如何在 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);
}