에러는 시스템이 종료되어야 수습할 수 있는 심각한 문제 ( 메모리 문제, 스택 오버플로우 )
예외는 비교적 덜 위험한 문제로 프로그래머가 처리가 가능하다.
예외는 또 다시 체크예외와 언체크 예외로 나누어진다.
런타임 예외(Runtime Exception)
라고도 불리며 명시적으로 예외처리를 해주지 않아도 된다. 예시로 NullPointerException
이나 IllegalArgumentException
등이 있다.
RuntimeException클래스를 상속 받는 클래스들이다.
무조건 예외처리를 하는 코드를 작성해야한다. 그렇지 않으면 컴파일 시에 오류가 발생한다. 예시로는 IOException
, SQLException
등이 있다.
RuntimeException클래스를 상속 받지 않는 클래스들이다.
Error class와 Exception class 모두 Throwable이라는 상위 클래스를 상속받는다.
위에서 보았듯이 Exception은 런타임 예외를 상속받는 언체크 예외와 그 외 (체크 예외)로 이루어진다.