问题
如何在Java中获取当前堆栈跟踪,例如.NET中可以执行Environment.StackTrace
?
顺便说一句,Thread.dumpStack()
不是我想要的 - 我想获得 stack traceback,而不是打印出来。
#1 热门回答(992 赞)
您可以使用Thread.currentThread().getStackTrace()。
它返回一个表示程序当前栈跟踪的 StackTraceElement 数组。
#2 热门回答(225 赞)
Thread.currentThread().getStackTrace();
如果你不关心堆栈的第一个元素是什么,那就好了。
new Throwable().getStackTrace();
#3 热门回答(157 赞)
for (StackTraceElement ste : Thread.currentThread().getStackTrace()) {
System.out.println(ste);
}