Как преобразовать StackTraceElement [] в строку? - PullRequest
0 голосов
/ 16 мая 2018

Thread.getStackTrace () возвращает StackTraceElement[]. Как я могу преобразовать это в String с тем же форматом, что и Exception.printStackTrace() return?

Чтобы уточнить: у меня нет исключения, только нить. Я хочу отобразить трассировку стека потока, используя тот же формат, что и трассировки стека исключений.

1 Ответ

0 голосов
/ 16 мая 2018

Это очень просто, вам просто нужно распечатать их с любым префиксом, который вы хотите.

Для печати так же, как printStackTrace(), префикс будет "\tat ".

Proof

// 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().

...