Throwable
최상위 예외, 하위에 Exception
과 Error
가 있다Error
메모리 부족이나 심각한 시스템 오류와 같이 애플리케이션에서 복구 불가능한 시스템 예외이다
애플리케이션 개발자는 이 예외를 잡으려 해서는 안된다Exception
애플케이션 로직에서 사용할 수 있는 실질적인 최상위 예외이다
RuntimeException을 제외한 하위 예외는 모두 컴파일러가 체크하는 Checked 예외이다RuntimeException
컴파일러가 체크 하지 않는 Unchecked 예외이다
RuntimeException과 하위 자식 예외는 모두 Unchecked 예외이다
**”런타임 예외”**라고 많이 부른다-예외는 폭탄 돌리기와 같다. 잡아서 처리하거나(try catch), 처리할 수 없으면 밖으로 던져야 한다(throws)
-예외를 잡거나 던질때 지정한 예외뿐만 아니라 그 예외의 하위 자식들도 함께 처리된다
→예로 Exception
을 catch로 잡으면 그 하위 예외들도 모두 잡을 수 있다
→예로 Exception
을 throws로 던지면 그 하위 예외들도 모두 던질 수 있다
참고. 예외 처리 하지 못하고 계속 던지면 어떻게 될까?
자바 main() 쓰레드의 경우 예외 로그를 출력하면서 시스템이 종료된다 → 웹 애플리케이션의 경우 여러 사용자의 요청을 처리하기 때문에 하나의 예외 때문에 시스템이 종료되면 안된다. WAS가 해당 예외를 받아서 처리하는데, 주로 사용자에게 개발자가 지정한 오류 페이지를 보여준다.
Exception
과 그 하위 예외는 모두 컴파일러가 체크하는 Checked 예외이다 (RuntimeException
제외)
체크 예외는 잡아서 처리하거나(try catch), 또는 밖으로 던지도록 선언(throws)해야 한다. 그렇지 않으면 컴파일 오류가 발생한다