2013-03-13 2 views
-1

A, B, C라는 3 개의 클래스가 있고 모든 예외가 클래스 A에 집중되어 있고 A가 부모 클래스이고 B가 A의 자식 클래스이고 C가 Bnow의 자식 클래스 인 경우 모든 응용 프로그램 정의 된 예외가 클래스 C에서 발생하면 예외를 클래스 B에 던지고 클래스 B는 클래스 A에 던져 예외를 중앙화합니다. 이제 클래스 C에서 예외적으로 발생하는 예외 추적을 얻을 수 있습니다.centralize Excpetion handling

+3

문제 개요를 설명해 주시겠습니까? 귀하의 설명은 약간 혼란 스럽습니다. – Henrik

+0

http://stackoverflow.com/a/11925477/139010 –

답변

0

스택 트레이스를 얻을 수 있고 알 수있는 경우, Throwable#getStackTrace()은 스택 트레이스 요소의 배열 형태로 stacktrace의 정보를 제공하며, 각각은 하나의 스택 프레임을 나타냅니다.

StackTraceElement에는 LineNumber, 메소드 이름, 실행 된 클래스 이름이 들어 있습니다. 그래서 실제로 던져진 곳을 알 수 있습니다.

0

심플. 부모 클래스 A에서 파생 된 클래스에서

을 예외를 처리 할 수있는 방법, 모두의

public void method(){ 
    try{ 
     //code 
    }catch(Exception e){ 
     super.catchExceptionMethod(e); 
    } 
} 
1

먼저 정의 할 수 있다면 당신은 실제로 일을하는 경우 아무것도하지만, 체크 된 예외를 피하려고 else는 단지 현재 작업 단위 (UOW)를 중지하고 오류를 기록하는 것보다 예외에 관한 것입니다. 반군 체크 된 예외가없는 경우

둘째, 당신은, 그렇지 않으면

try { 
    ... 
} catch (RuntimeException e) { throw e; } 
    catch (Exception e) { throw new RuntimeException(e); } 

으로 제어 외부에서 확인이 끝난 예외를 방출 코드의 조각을 포장한다, 단지 아무것도를 잡을하지 않고 예외가 자동으로 중앙 처리 장소로 전달됩니다.

마지막으로 설명 된대로 수행하면 캡처 된 예외에 직접 저장되거나 .getCause()으로 검색 할 수있는 예외가 항상 원래 스택 추적으로 유지됩니다. printStackTrace() 또는 log.error("error", e)을 수행하면 전체 원인 체인이 자동으로 생성됩니다.