打印异常的堆栈跟踪
如何将异常的堆栈跟踪打印到 stderr 以外的流中?我发现的一种方法是使用getStackTrace()并将整个列表打印到流中。
如何将异常的堆栈跟踪打印到 stderr 以外的流中?我发现的一种方法是使用getStackTrace()并将整个列表打印到流中。
不漂亮,但仍然是一个解决方案:
StringWriter writer = new StringWriter();
PrintWriter printWriter = new PrintWriter( writer );
exception.printStackTrace( printWriter );
printWriter.flush();
String stackTrace = writer.toString();
还有一种另一种形式的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 错误。