2016-09-11 5 views
-1

내가 개발 한 소프트웨어 중 하나에서 예외 메커니즘을 관리하려고합니다.java.lang.exception.getCause()가 매번 null이됩니다.

프로그램의 어느 곳에서 나는 다음과 같이합니다.

IF(my condition not allowed){ 
    throw new Exception("My condition not allowed", null) 
} 

이는 프로그램 오류와 관련이없는 것으로 이해하려면 java.lang.exception 매개 변수로 null을 반환합니다. (난 내 자신의 사용자 정의 예외를 만들 수있는 기회가 없어, 고려해보십시오)

그리고 어딘가에 프로그래밍 예외가 이런 식으로 잡을;

}catch(Exception e){ 
if(null == e.getCause) 
    do.somethingThatIWantToCatch(); 
}else{ 
    do.somethingProgramaticalError(); 
} 

여기서 문제는; 내 코드는 NullPointerException, ArrayIndexOutOfBoundsException 등등 같이 알 수없는 다른 것을 던질 수 있습니다 ...

이 시점에서 나는 programatic 오류가 발생하면 e.getCause()가 null이 아니어야한다고 생각하지만이 모든 것은 NULL이됩니다. 시간과 나는 do.somethingThatIWantToCatch(); 항상 상태.

이 상황을 어떻게 처리하고 do.somethingProgramaticalError()를 실행할 수 있습니까? 조건 ??? 사전

+1

설명서를 읽으십시오. 'getCause()'는 보통 null입니다. 자신 만의 예외를 만들어야합니다. – SLaks

+0

이것은 예외 시스템의 엄청난 오용입니다. 자신의 예외를 잡으려면 * 자신의 예외를 throw하십시오. 파생 예외 클래스 또는 여러 클래스를 만듭니다. – EJP

+0

알려 주셔서 감사합니다. 그러나 예외를 처리하는 적절한 방법이 아니라는 것을 이미 알고 있습니다. 은행의 엄격한 인프라에서 작업하는 한 내 맞춤 예외를 만들지 않습니다. 이것이 내가 해결 방법을 찾고있는 이유입니다. 나는 이것을 사용하는 것이 적절한 지 아닌지에 대한 지식이 아니라 이것을 해결할 필요가있다. 감사 :) – BurakT

답변

0

에서

덕분에 당신은 결코Exception 인스턴스 (또는 선택하지 않은 아이 RuntimeException)를 던져해야합니다. 적절한 하위 클래스를 찾아서 던져야하며, 적절한 하위 클래스가없는 경우 하위 클래스를 직접 만들어야합니다.

잡기 Exception은 걱정되는 NullPointerException과 그렇지 않은 예외 유형을 포함하여 태양 아래 모든 유형의 예외를 잡아낼 수 있습니다. catch하는 예외의 유형에 대해 가능한 한 구체적으로 지정하는 것이 가장 좋으며 따라서 우연히 처리하지 않으려는 다른 예외가 처리되지 않습니다.

getCause()은 일반적으로 다른 예외의 생성자로 전달되는 예외입니다. 이는 대다수 예외에 해당합니다.

관련 문제