如何将 StackTraceElement[] 转换为字符串?

How to convert a StackTraceElement[] to a String?

Thread.getStackTrace()returnsStackTraceElement[]。如何将其转换为与 Exception.printStackTrace() returns 格式相同的 String?

澄清一下:我没有异常,只有一个线程。我想使用与异常堆栈跟踪相同的格式显示线程的堆栈跟踪。

超级简单,你只需要打印它们,加上你想要的任何前缀。

要打印与 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() 本身的堆栈帧。