한 메서드에서 발생할 수 있는 예외가 여럿인 경우, 몇 개는 try-catch문을 통해 메서드 내에서 자체적으로 처리하고, 나머지는 선언부에 지정하여 호출한 메서드에서 처리하도록 하여 나누어 처리가 가능하다.
예외를 처리한 후에 인위적으로 다시 예외를 발생시키는 방법으로 예외가 발생한 메서드, 호출한 메서드 양쪽에서 예외를 처리할 수 있다.
이렇게 인위적으로 예외를 다시 발생시키는 것을
예외 되던지기(exception re-throwing)라고 한다.
class MyException {
static void method1() throws Exception {
try {
throw new Exception();
}catch(Exception e) {
System.out.println("method1 메서드에서 예외처리가 되었습니다.");
throw e; // 다시 예외를 발생시킴
}
} // method1메서드 끝
public static void main(String[] args) {
try {
method1();
}catch(Exception e) {
System.out.println("main메서드에서 예외가 처리되었습니다");
}
} // 메인메서드 끝
}
예외 발생 가능성이 있는 메서드에서 try-catch문을 사용하여 예외를 처리해주고 catch문에서 필요한 작업을 행한 후에 throw문을 사용하여 다시 예외를 발생시켜 이 메서드를 호출한 메서드에게 전달해준다.
그리고 호출한 메서드에서의 try-catch문에서 예외를 다시 처리한다.
하나의 예외에 대해 예외가 발생한 메서드와 이를 호출한 메서드 양쪽 모두에서 처리해줘야 할 작업이 있을 때 사용된다.
이 때 주의할 점은 예외가 발생한 메서드에서는 try-catch문을 사용해서 예외처리를 해줌과 동시에 메서드의 선언부에 발생할 예외를 throws에 지정해줘야 한다!
🔥 한줄평
예외 되던지기를 활용해보지 못해서 와닿는 내용은 아니었다...
앞으로도 사용할 일이 있을까..?