예외 되던지기는 메서드작동중 발생한 예외를 메서드에서 try-catch문으로 처리한 다음 다시 throw를 통해 예외를 강제로 발생시키고 throws를 이용해 해당 메서드를 호출한 메서드에 전달한다.
호출한 메서드의 try-catch문에서 예외를 또 다시 처리한다.
이 방법은 하나의 예외에 대해서 예외가 발생한 메서드와 이를 호출한 메서드 양쪽 모두에서 처리해줘야 할 작업이 있을 때 사용된다. 이 때 주의할 점은 예외가 발생할 메서드에서는 try-catch문을 사용해서 예외처리를 해줌과 동시에 메서드의 선언부에 발생할 예외를 throws에 지정해줘야 한다는 것이다.
class ReThrowingTest {
public static void main (String[] args) {
try {
method1();
} catch (Exception e) {
System.out.println("main메서드에서도 예외가 처리됐습니다.");
}
}
void method1() throws Exception {
try {
throw new Exception();
} catch (Exception e) {
System.out.println("method1메서드에서 예외가 처리됐습니다.");
throw e; // 굳이 new Exception으로 예외를 발생하지않고 재활용한다.
}
}
}
해당 클래스를 실행하면 아래와 같이 출력된다.
method1메서드에서 에외가 처리됐습니다.
main메서드에서도 예외가 처리됐습니다.
method1(), main()에서 각각 예외가 발생해 try-catch문을 한개의 예외로 두개 사용할 수 있었다.