예제 코드를 통해 Java Exception Stack의 기능 사용을 분석하고 아래의 예외 스택 정보를 얻기 위해 Java가 두 가지 방법을 컴파일했습니다. 다음은 모든 내용입니다.
(스택 추적) 예외 스택 트레이스는 다음을 나타냅니다.
던지기가 가능할 때, 던질 수있는 객체는 프로세스 (셔틀)가 통과하는 여러 메소드 호출 레이어 (메소드 호출 스택)를 던집니다. 던지기 문에 가까워 질수록 메소드가 먼저 예외 스택으로 들어갑니다.
(던질 가능한 인과 체인) 예외 원인 체인 :
Throwable 클래스의 원인 속성은 현재 예외에 의해 래핑 된 원래 예외를 나타냅니다. (예외의 원인이라고 할 수 있음)
예외 스택 트랙을 인쇄 할 때 원래 예외의 예외 스택이 재귀 적으로 인쇄됩니다.
이제 Throwable.printstacktrace () 메소드를 분석하겠습니다.
Inside Throwable.printstacktrace (PrintstreamorWriter), 우리는 다음을 볼 수 있습니다.
예외 스택을 인쇄 할 때 현재 예외 객체의 예외 스택이 먼저 인쇄됩니다.
그런 다음 예외의 원인을 인쇄하십시오. (원래 예외의 예외 스택을 재귀 적으로 인쇄)
synchronized (s.lock ()) {// 스택 추적 // 1. 먼저 현재 예외 객체의 예외 스택을 인쇄하십시오. S.println (this); stacktraceElement [] trace = getourstacktrace (); for (stackTraceElement traceElement : trace) s.println ( "/tat" + traceElement); // (Throwable SE : getSuppressed ()) se.printenclosedStacktrace (s, trace, suppressed_caption, "/t", dejavu); // 인쇄 원인, 어떤 경우 // 2. 인쇄 원인 ourCause = getCause (); if (wecause! = null) ourcause.printenclossstacktrace (s, trace, ages_caption, "", dejavu); }Java는 예외 스택 정보를 얻습니다
방법 1 : 방법 1
public static string getStacktrace (Throwable T) {StringWriter SW = New StringWriter (); printwriter pw = new printwriter (SW); {t.printstacktrace (pw); 반환 sw.tostring (); } 마침내 {pw.close (); }}방법 2 : 방법 2.
org.apache.commons.lang3.exception.exceptionuils.getStacktrace (e);