打印异常的堆栈跟踪

2022-08-31 10:48:19

如何将异常的堆栈跟踪打印到 stderr 以外的流中?我发现的一种方法是使用getStackTrace()并将整个列表打印到流中。


答案 1

不漂亮,但仍然是一个解决方案:

StringWriter writer = new StringWriter();
PrintWriter printWriter = new PrintWriter( writer );
exception.printStackTrace( printWriter );
printWriter.flush();

String stackTrace = writer.toString();

答案 2

还有一种另一种形式的Throwable.printStackTrace()将打印流作为参数。http://download.oracle.com/javase/6/docs/api/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)

例如:

catch(Exception e) {
    e.printStackTrace(System.out);
}

这会将堆栈跟踪打印到 std out 而不是 std 错误。