API 호출자가 예외 상황에서 복구할 방법이 없다면 비검사 예외를 던지자.
복구가 가능하고 호출자가 그 처리를 해주길 바란다면, 우선 옵셔널을 반환해도 될지 고민하자.
옵셔널만으로는 상황을 처리하기에 충분한 정보를 제공할 수 없을 때만 검사 에외를 던지자.
//검사 예외를 던지는 메서드
try {
obj.action(args);
} catch(TheCheckedException e) {
... 예외 상황에 대처
}
//상태 검사 메서드와 비검사 예외를 던지는 메서드
if(obj.actionPermitted(args)) {
obj.action(args);
} else {
... 예외 상황에 대처
}