JAVA

예외 계층에 대해서

youngjae-kim 2024. 2. 6. 22:38
728x90
반응형

예외 계층의 예외들은 모두 객체이기 때문에 Object의 자식 객체이다.

Throwable

  • 최상위 예외
  • 하위에 Exception과 Error가 있음

Error는 애플리케이션 수준에서 복구가 불가능한 시스템 예외이다.

  • 개발자는 이 예외를 잡으려 해서는 안된다.
  • 상위 예외를 잡으면 하위 예외까지 함께 잡기 때문에 애플리케이션 로직에서는 Throwable 예외도 잡으면 Error 예외까지 잡아버리기 때문에 Exception 예외부터 개발자가 catch 구문으로 잡아 처리한다고 생각하면 된다.

Exception 예외부터 잡는다고 생각하면 된다.

  • Exception 예외는 체크 예외와 언체크 예외(런타임 예외)로 나뉜다.

체크예외

체크 예외 (붉은색)는 RuntimeException을 상속하지 않는 예외라고 생각하면 된다. 체크 예외를 발생시키는 메서드를 사용할 경우 이 예외들은 복구가 가능한 예외들이라 반드시 예외를 처리하는 코드를 작성해주어야 한다.

예외를 처리하는 방법은 catch 구문을 사용하여 발생한 예외를 잡거나 throws 사용하여 예외를 자신을 호출한 메서드로 다시 던지는 방법을 사용해야 한다.

해결하지 않으면 컴파일러가 체크 예외가 해결되지 않았다고 오류를 발생시킨다.

언체크 예외

언체크 예외는 RuntimeException의 자식 예외들을 말한다.

단어에서 알 수 있듯이 ‘언체크’ 즉, catch나 throw를 사용한 예외 처리를 강제하지 않는다는 의미이다.

  • 예외는 잡아서 처리하거나 던져서 처리한다.
  • 예외를 잡을 때는 지정한 예외와 그 예외의 자식 예외들도 함께 처리한다.

예외를 계속 던지면 main() 메서드까지 올라가게 되고 그렇게 되면 시스템이 종료된다.

웹 애플리케이션의 경우는 WAS가 예외를 받아 오류 페이지를 보여주는 방식으로 처리한다.

728x90
반응형