如何在没有printStackTrace的情况下从异常中获取stackTrace?

时间:2013-12-30 16:36:40

标签: java checkstyle

是否可以在不使用printStackTrace()的情况下从异常中获取整个跟踪? 其中一个原因是因为我使用CheckStyle并且我收到了一条丑陋的消息。仅仅拨打toString()是不够的。我希望得到完整的信息,因为我需要通过电子邮件发送给我。

目前,我正在做

 StringWriter e = new StringWriter();
 exception.printStackTrace(new PrintWriter(e));

- 避免使用printStackTrace()进行跟踪,而是使用log4j。

否则,我可以在那里禁用CheckStyle

4 个答案:

答案 0 :(得分:3)

如果您想获取错误详情,请尝试Apache Commons Lang api

有一个班级ExceptionUtils。您可以使用getFullStackTrace

答案 1 :(得分:2)

你试过吗?:

Throwable thr = e.getStackTrace();
StackTraceElement[] lines = thr.getStackTrace();

从那里开始工作。另外,请查看javadocs Oli linked above

答案 2 :(得分:1)

您可以从当前线程获取堆栈跟踪, 检查一下:

Thread.currentThread().getStackTrace()

答案 3 :(得分:0)

试试这个,您将能够打印堆栈跟踪而不会出现检查样式错误。

import org.apache.commons.lang.exception.ExceptionUtils;

String errorMessage = ExceptionUtils.getFullStackTrace(exception);  
logger.debug(errorMessage);