핸들링을 강요하지 않는 동적인 예외, Unckecked Exception
시스템에 비정상적인 상황이 발생했을 경우 발생한다.
메모리 부족(OutOfMemoryError) 이나 스택 오버 플로우(StackOverflowError) 같이 복구 불가능한 것을 말한다.
에러는 개발자가 예측하기도 쉽지 않을 뿐더러 처리할 방법 또한 없다.
프로그램 실행중, 예기치 않은 상황이 발생했을 경우 발생한다.
배열의 범위를 벗어날 경우(ArrayIndexOutOfBoundsException) 나 값이 null 인 객체 내부의 참조변수(field) 를 참조하여 할 경우 (NullPointerException) 발생한다.
이러한 예외는
으로 나뉜다.
반드시 처리해야하는 예외 상황에 발생시킨다.
Exception 클래스의 하위클래스이면서, RuntimeException 의 하위클래스가 아닌 형태로 존재한다.
즉, RuntimeException 으로 치환될 수 없는 Exception 의 하위클래스 이다.
존재하지 않는 파일의 이름을 입력(FileNotFoundException)하였을 때 같이, 추가적인 핸들링이 필요할 경우 발생한다.
굳이 추가적으로 처리하지 않아도 되는 예외상황에 발생시킨다
따라서 핸들링을 강제하지 않는다
RuntimeException
의 하위클래스로 구현된다.
배열의 범위를 벗어난(ArrayIndexOutOfBoundsException) 인덱스로 배열을 호출하였을 경우 같이 개발자의 실수로 인한 예외상황에 발생한다.
또한, 모든 Exception 과 Error 는 사용자가 Exception, Error, RuntimeError 를 상속한 클래스를 작성함으로서 Customizing 할 수 있다.