是否可以在不使用printStackTrace()
的情况下从异常中获取整个跟踪?
其中一个原因是因为我使用CheckStyle
并且我收到了一条丑陋的消息。仅仅拨打toString()
是不够的。我希望得到完整的信息,因为我需要通过电子邮件发送给我。
目前,我正在做
StringWriter e = new StringWriter();
exception.printStackTrace(new PrintWriter(e));
- 避免使用printStackTrace()
进行跟踪,而是使用log4j。
否则,我可以在那里禁用CheckStyle
。
答案 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);