我有以下代码:
import org.apache.commons.lang.exception.ExceptionUtils;
public void myMethod() {
try {
// do something
} catch (Exception e) {
System.out.println(ExceptionUtils.getStackTrace(e)); // prints "java.lang.NullPointerException"
System.out.println(ExceptionUtils.getFullStackTrace(e)); // prints "java.lang.NullPointerException"
e.printStackTrace(); // prints "java.lang.NullPointerException"
}
}
我希望看到的输出是一个完整的堆栈跟踪,其中包含行号和失败的类的层次结构.例如,
Exception in thread "main" java.lang.NullPointerException
at org.Test.myMethod(Test.java:674)
at org.TestRunner.anotherMethod(TestRunner.java:505)
at java.util.ArrayList(ArrayList.java:405)
这个代码是在一个更大的应用程序中运行的,该应用程序也有log4j,但我希望能够将异常变为字符串,以便我可以将其作为电子邮件发送给java开发人员.
有没有人对如何将完整的堆栈跟踪捕获到字符串有任何想法?我不能使用Thread.currentThread().getStackTrace(),因为这个应用程序在Java 4上运行.什么可能阻止上面的代码打印完整的堆栈跟踪?