Notice
Recent Posts
Recent Comments
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Archives
Today
Total
관리 메뉴

충분히 쌓여가는

11.5 예외 떠넘기기 - throws 본문

이것이 자바다/11 예외 처리

11.5 예외 떠넘기기 - throws

빌드이너프 2024. 4. 8. 11:47

throws

메소드 내부에서 예외가 발생할 때 try-catch 블록으로 예외를 처리하는 것이 기본이지만,

메소드를 호출한 곳으로 예외를 떠넘길 수도 있고 이때 사용하는 키워드가 throws이다

리턴타입 메소드명(매개변수, ...) throws 예외클래스1, 예외클래스2, ... {
}

 

throws 키워드가 붙어 있는 메소드에서 해당 예외를 처리하지 않고 떠넘겼기 때문에 이 메소드를 호출하는 곳에서 예외를 받아 처리해야 함

ClassNotFoundException을 throws하는 method2()의 예외를 method1()에서 호출할 때 처리하고 있다

public void method1() {
  try {
    method2();
  } catch(ClassNotFoundException e) {
    System.out.printlm("예외 처리: " + e.getMessage());
  }
}

public void method2() throws ClassNotFoundException {
  Class.forName("java.lang.String2");
}

 

나열해야 할 예외 클래스가 많을 경우에는 throws Exception 또는 throws Throwable 만으로 모든 예외를 간단히 떠넘길 수 있다

리턴타입 메소드명(매개변수, ...) throws Exception {
}

 

main() 메소드에서도 throws 키워드를 사용해서 예외를 떠넘길 수 있는데,

결국 JVM이 최종적으로 예외 처리를 하게된다

public static void main(String[] args) throws Exception {
  ...
}