Java将堆栈跟踪发送到不同的输出流

ewo*_*wok 10 java exception stack-trace

当我在Java应用程序中捕获异常时,我需要记录堆栈跟踪.我知道异常有一个内置printStackTrace()方法,并且可以将堆栈跟踪发送到不同的PrintWriter/PrintStream,但是如果我可以将堆栈跟踪作为String抓取以便我可以操作它或显示它一个JMessagePane或其他东西.目前,我必须这样做的唯一方法是:

String stackTrace = "";
stackTrace += e.getClass().getName() + ": " + e.getMessage() + "\n";

for (StackTraceElement elt : e.getStackTrace()) {
    stackTrace += "\tat " + elt + "\n";
}
Run Code Online (Sandbox Code Playgroud)

有更清洁的方法吗?

Tom*_*icz 22

有:

StringWriter writer = new StringWriter();
e.printStackTrace(new PrintWriter(writer));
String stackTrace = writer.toString();
Run Code Online (Sandbox Code Playgroud)