协慌网

登录 贡献 社区

如何将堆栈跟踪转换为字符串?

Throwable.getStackTrace()的结果转换为描述堆栈跟踪的字符串的最简单方法是什么?

答案

使用Throwable.printStackTrace(PrintWriter pw)将堆栈跟踪发送到适当的编写器。

import java.io.StringWriter;
import java.io.PrintWriter;

// ...

StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
e.printStackTrace(pw);
String sStackTrace = sw.toString(); // stack trace as a string
System.out.println(sStackTrace);

可以使用以下方法将Exception堆栈跟踪转换为String 。这个类在Apache commons-lang 中可用, 它是最常见的依赖库,有许多流行的开源

org.apache.commons.lang.exception.ExceptionUtils.getStackTrace(Throwable)

这应该工作:

StringWriter sw = new StringWriter();
e.printStackTrace(new PrintWriter(sw));
String exceptionAsString = sw.toString();