【发布时间】:2012-02-22 22:25:50
【问题描述】:
当我在 Java 应用程序中捕获异常时,我需要记录堆栈跟踪。我知道异常有一个内置的 printStackTrace() 方法,它可以将堆栈跟踪发送到不同的 PrintWriter/PrintStream,但是如果我可以将堆栈跟踪作为字符串抓取,以便我可以操作它或将其显示在 JMessagePane 或其他内容中。目前,我必须这样做的唯一方法是:
String stackTrace = "";
stackTrace += e.getClass().getName() + ": " + e.getMessage() + "\n";
for (StackTraceElement elt : e.getStackTrace()) {
stackTrace += "\tat " + elt + "\n";
}
有没有更简洁的方法来做到这一点?
【问题讨论】:
-
可能值得注意的是,
printStackTrace方法比问题正文中建议的替代方法做得更多。也就是说,它包括原因的堆栈跟踪(如果设置了一个)并从原因中排除任何与原始异常相同的StackTraceElement,因此短语... <int> more -
优点。这是我想要更优雅的方式来做到这一点的另一个原因。
标签: java exception stack-trace