다중 catch문 - 다중 catch문의 주의 사항, 하위 예외객체가 먼저 온 경우, 상위 예외 객체가 먼저 온 경우, 다중 catch문을 사용시 이점

CODEDRAGON Development/Java

반응형

   

   

다중 catch

다중 catch문은 하나의 try문 내에 여러 개의 예외가 발생 가능할 경우 사용합니다.

예외가 발생하면, try 블록과 가장 가까운 catch 블록부터 순서대로 검사합니다.             

try{

// 예외 발생 가능한 문장들;

} catch(예상되는_예외객체1 변수명){

// 해당 예외가 발생했을 수행할 문장들;

} catch(예상되는_예외객체2 변수명){

// 해당 예외가 발생했을 수행할 문장들;

} catch(예상되는_예외객체3 변수명){

// 해당 예외가 발생했을 수행할 문장들;

}

   

   

   

 

다중 catch문의 주의 사항

·       여러 개의 catch 블록을 사용할 때는 Exception 클래스의 계층 관계에 주의를 기울여야 합니다.

·       예외(Exception)에서 가장 상위(parent)에 있는 클래스는 Exception클래스입니다. 그러므로 가장 아래쪽에 정의 해야 합니다.

·       왜냐하면 예외는 상위(parent)클래스가 모든 예외를 가지고 있으므로 가장 위에 정의를 하게 되면 모든 예외를 처리하게 되므로 두 번째 catch문부터는 비교 수행할 수 없게 됩니다

   

   

하위 예외객체가 먼저 온 경우

try{

// 예외 발생 가능한 문장들;

} catch(NumberFormatException e){ //하위 예외 객체

// 해당 예외가 발생했을 수행할 문장들;

} catch(ArithmeticException e){ //하위 예외 객체

// 해당 예외가 발생했을 수행할 문장들;

} catch(Exception e){ //상위 예외 객체

// 해당 예외가 발생했을 수행할 문장들;

}

   

   

상위 예외 객체가 먼저 온 경우

   

try{

// 예외 발생 가능한 문장들;

} catch(Exception e){ //상위 예외 객체

// 해당 예외가 발생했을 수행할 문장들;

} catch(NumberFormatException e){ //하위 예외 객체

// 수행되지 않습니다.

} catch(ArithmeticException e){ //하위 예외 객체

// 수행되지 않습니다.

}

   

   

   

다중 catch문을 사용시 이점

다중 catch문을 사용하면 하나의 try 블록에 둘 이상의 catch 블록을 구성할 수 있기 때문에 예외처리와 관련된 부분을 완전히 별도로 떼어 놓을 수 있는 장점이 있습니다.