java 중첩 - 특정 예외를 제외한 모든 예외를 잡는 방법?





가이드 자바 (3)


너는 이렇게 할 수있어.

try {
    methodThrowingDifferentExceptions();    
} catch (Exception e) {
    if(e instanceof SpecificException){
      throw e;
    }
}

특정 메소드를 제외하고 메소드의 모든 예외를 포착하는 것이 가능합니까?

void myRoutine() throws SpecificException { 
    try {
        methodThrowingDifferentExceptions();
    } catch (SpecificException) {
        //can I throw this to the next level without eating it up in the last catch block?
    } catch (Exception e) {
        //default routine for all other exceptions
    }
}



void myRoutine() throws SpecificException { 
    try {
        methodThrowingDifferentExceptions();
    } catch (SpecificException se) {
        throw se;
    } catch (Exception e) {
        //default routine for all other exceptions
    }
}



CodeAnalysis / FxCop 이 일반적인 예외 유형을 포착한다는 사실에 대해 불만을 표시한다는 것을 제외하면 허용되는 대답이 받아 들여질 수 있습니다.

또한 "is"연산자가 성능을 약간 저하시킬 수 있습니다.

CA1800 : "as 연산자"대신에 "as"연산자의 결과를 테스트하는 것을 고려해야한다는 불필요한 말은 하지 말고 , 그렇게하면 각 예외를 개별적으로 catch하는 것보다 더 많은 코드를 작성하게됩니다.

어쨌든, 내가 할 일은 다음과 같습니다.

bool exThrown = false;

try
{
    // Something
}
catch (FormatException) {
    exThrown = true;
}
catch (OverflowException) {
    exThrown = true;
}

if (exThrown)
{
    // Something else
}




java exception