나는 다음과 같은 코드가 있습니다자바 예외 스택 추적하지 인쇄
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 4에서 실행되기 때문에 Thread.currentThread(). getStackTrace()를 사용할 수 없습니다. 위의 코드가 전체 스택 트레이스를 인쇄하지 못하게하는 이유는 무엇입니까?
NPE의 StackTraceElement 배열이 비어있는 것으로 표시됩니다. NPE에서 setStackTrace를 호출하는 것이 있습니까? –
@DanGravell - 아니, 아무것도 setStackTrace를 호출해야합니다. – David
IDE에서 이것을 디버깅 할 수 있습니까? 예외가 '완벽하게 형성되었는지'보려면 catch 블록에 중단 점을 설정하는 것이 좋습니다. –