RuntimeException과 Exception은 둘 다 Throwable 클래스를 상속하지만, 처리 방식이 다릅니다.
Checked Exception vs Unchecked Exception
1. RuntimeException (Unchecked Exception):
- 컴파일러가 예외 처리를 강제하지 않습니다.
- 예외를 던질 때 throws 키워드나 try-catch 블록을 작성할 필요가 없습니다.
- NullPointerException, IllegalArgumentException 등이 이 범주에 속합니다.
2. Exception (Checked Exception):
- 컴파일러가 예외 처리를 강제합니다.
- 예외를 던질 때 반드시 메서드 선언에 throws 키워드로 명시하거나, 호출하는 곳에서 try-catch 블록으로 처리해야 합니다.
- IOException, SQLException 등이 이 범주에 속합니다.
정리하자면, Unchecked Exception은 프로그래머의 실수나 비정상적인 상황에서 발생하고, 처리를 강제하지 않고 유연하게 사용할 수 있습니다.
다만, Checked Exception은 파일을 읽거나, 네트워크 통신과 같이 예측 가능한 예외를 명시적으로 처리하도록 강제합니다. 컴파일 타임에 예외 처리를 확인할 수 있어, 런타임 에러를 줄일 수 있습니다.