我有以下代码:
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 上运行。什么可能阻止上述代码打印完整的堆栈跟踪?