Thread.getStackTrace()返回StackTraceElement[]
。如何将其转换为与String
返回相同格式的Exception.printStackTrace()
?
澄清一下:我没有例外,只有一个线程。我想使用与异常堆栈跟踪相同的格式显示线程的堆栈跟踪。
最佳答案
这非常容易,您只需使用所需的任何前缀就可以打印它们。
要与printStackTrace()
打印相同,前缀为"\tat "
。
证明
// Show printStackTrace() output
new RuntimeException().printStackTrace(System.out);
// Similar output using getStackTrace()
StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();
System.out.println("getStackTrace()");
for (int i = 1; i < stackTrace.length; i++)
System.out.println("\tat " + stackTrace[i]);
输出量
java.lang.RuntimeException
at Test.main(Test.java:5)
getStackTrace()
at Test.main(Test.java:8)
请注意
for
循环如何跳过索引0,因为那是getStackTrace()
本身的堆栈框架。