아이템 70. 복구할 수 있는 상황에는 검사 예외를, 프로그래밍 오류에는 런타임 예외를 사용하라
자바는 문제 상황을 알리는 타입(Throwable
)으로 검사 예외, 런타임 예외, 에러의 세 가지를 제공한다.
호출하는 쪽에서 복구하리라 여겨지는 상황이라면 검사 예외를 사용하라
- 검사와 비검사 예외를 구분하는 기본 규칙
- API 설계자가 검사 예외를 던진다는 것은 API 사용 시 발생할 수 있는 유력한 결과인 예외 상황에 대해 API 사용자에게 회복해내라고 요구한 것이다.
- 런타임 예외나 에러 상황은 복구가 불가능하거나 더 실행해봐야 실이 더 많은 경우에 사용한다.
프로그래밍 오류를 나타낼 때는 런타임 예외를 사용하라
- 런타임 예외의 대부분은 전제조건을 만족하지 못했을 때 발생한다.
- ex)
ArrayIndexOutOfBoundsException
- 검사 예외를 써야할지, 런타임 예외를 써야할지 명확하지 않다면 런타임 예외를 선택하는 편이 낫다.
에러
- 에러는 보통 JVM 자원 부족, 불변식 깨짐 등 더 이상 수행할 수 없을 때 발생한다.
- 일반적인 개발자가
Error
나 Throwable
을 상속해 에러를 직접 만드는 일은 없다.
- 모든 비검사 예외는
RumtimeException
을 상속하여 만들자