-
Java - ExceptionLanguage/Java 2022. 9. 29. 13:41
Exception
예외(Exception) 계층 구조
Java에서 Exception은 Checked와 UnChecked 두 가지로 나눌 수 있다. 위 사진은 Java Exception 클래스 계층 구조를 보여준다.
1. 체크 예외(Checked Exception)
실행하기 전에 예측 가능한 예외들을 말하는데, 체크 예외가 발생할 수 있는 메서드를 사용할 경우, 복구가 가능한 예외들이기 때문에 반드시 예외를 처리하는 코드를 작성해야 한다. catch 문으로 예외를 잡거나, throws로 예외를 호출한 클래스로 던지는 방법으로 해결해야 한다.
ex) IOException, SQLException
2. 언체크 예외(UnChecked Exception)
실행하고 난 후에 알 수 있는 예외들을 말하는데, 언체크 예외라고 불리는 이유는 명시적으로 예외처리를 강제하지 않기 때문이다. 언체크 예외는 따로 catch 문으로 예외를 잡거나 throws로 선언하지 않아도 된다. 프로그램에 오류가 있을 때 발생하도록 의도된 것이다.
ex) NullPointerException, ArrayIndexOutOfBoundException
Exception과 Error의 차이?
Error는 실행 중 일어날 수 있는 치명적인 오류이다. 컴파일 시점에 체크할 수 없고 오류가 발생하면 프로그램은 비정상적으로 종료된다.
Exception은 Error보다 비교적 경미한 오류로 try-catch 문을 이용하여 프로그램의 비정상적인 종료를 막을 수 있다.
Error는 런타임에서 실행 시 발생되며, 전부 예측 불가능한 UnChecked Error에 속한다. Exception과는 다르게 오류가 발생할 경우 코드를 고쳐야만 해결이 가능하다.
RuntimeException과 아닌 것의 차이
RuntimeException은 Uchecked Exception을 상속한 클래스이고, RuntimeException이 아닌 것은 Checked Exception을 상속한 클래스이다.
RuntimeException을 상속한 예외들은 명시적인 예외 처리를 강제하지 않기 때문에 따로 catch 문으로 예외를 잡거나, throws로 선언하지 않아도 된다.
RuntimeException이 아닌 것은 Checked Exception이 발생할 수 있기 때문에 반드시 예외를 처리하는 코드를 함께 작성해야 한다.
출처
ㆍ https://dev-coco.tistory.com/18?category=962739
728x90'Language > Java' 카테고리의 다른 글
Java - Custom Exception (0) 2022.09.29 Java - 예외 처리 (0) 2022.09.29 Java - 추상 클래스 & 인터페이스 (0) 2022.09.21 Java - final (0) 2022.09.20 Java - '==' 연산자 와 'equals()'를 이용한 문자열 비교 (0) 2022.09.20