У меня есть следующий код:Java Exception StackTrace Не Печать
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"
}
}
Вывод, который я хотел бы видеть это полный StackTrace с номерами строк и иерархия классов, которые не удалось. Например,
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. Что может блокировать вышеуказанный код от печати полного stacktrace?
Похоже, что массив StackTraceElement в NPE сбрасывается на пустой. Что-нибудь вызывает setStackTrace на NPE? –
@DanGravell - Нет, ничто не должно вызывать setStackTrace. – David
Вы можете отлаживать это в среде IDE? Возможно, стоит установить контрольную точку в блоке catch, чтобы убедиться, что Exception «отлично сформирован». –