我有以下代码:
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开发人员。
有没有人有任何关于如何将完整的堆栈跟踪捕获为字符串的想法?由于此应用程序在Java 4上运行,因此无法使用Thread.currentThread().getStackTrace()。可能会阻止上述代码打印完整的堆栈跟踪是什么?
myMethod()
函数或实际函数的已记录输出。e.printStackTrace();
通常应打印完整跟踪。 - basiljames