프로그램 실행 시 발생할 수 있는 오류에 대비하는 것으로 프로그램의 비정상종료를 막고 실행 상태를 유지하는 것이다.
UncheckedException
과 CheckedException
으로 구분한다.RuntimeException 클래스와 그 하위 클래스들
이다.Exception 클래스의 하위 클래스중에서
RuntimeException 클래스의 하위 클래스가 아닌 예외클래스
다.
주로 사용자의 잘못된 사용으로 인해 발생되는 오류들이다.
컴파일러가 예외처리 구현 여부를 반드시 체크한다.
<aside>
💡 예외처리를 하지 않는다면
CheckedException
은 컴파일러가 실행 전 구현 여부를 체크하고, 구현하지 않았을 시 실행 자체를 하지 않는다.
UncheckedException
은 실행 전 구현 여부를 체크하지 않고, 강제되지는 않는다.
그러나 발생한 예외에 대하여 throws나 catch를 하지 못한 예외는 JVM에 전달되어 프로그램이 비정상적으로 종료된다.
따라서 필요에 따라 개발자가 적절한 예외처리를 해주는 것이 필요하다.
(Unchecked Exception에 대하여 자바 api의 메소드들이 throws로 예외처리를 호출 측에 위임하고 있는 경우도 있다.)
</aside>
<aside>
💡 - 최신의 라이브러리나 프레임워크에서는 CheckedException
의 사용비중이 점점 줄어들고 있다. 대부분 UncheckedException
으로 설계되고 있다.
(컴파일러가 예외처리 여부를 체크해주지 않는다)
unchecked로 해서 사용자의 웹브라우저 화면에 오류화면을 보내는 식.
⇒ 예외 변환 부분을 보면 이해할 수 있음
</aside>