Checked Exception 이 고통스러운 경우

Checked Exception 을 피하는 방법

예외를 복구하기 어려울 때 -> RuntimeException

복구하기 어려울때는 RuntimeException 을 발생시키는게 속 편하다.

예외를 복구해야할 때

1. Optional 을 반환하기(아이템 55)

단점: 예외가 발생한 이유를 알려주는 부가 정보를 담기 어려움

2. 검사 예외를 던지는 메서드를 2개로 쪼개서 비검사 예외로 바꾸기

AS-IS

try {
    obj.action(args);
} catch (CheckedException e) {
    handleException(e); // 예외 상황에 대처한다.
}

TO-BE

if (obj.actionPermitted(args)) {
    obj.action(args);
} else {
    handleException(); // 예외 상황에 대처한다.
}

그렇다면??

무식하게 아래처럼 해도 괜찮다. 어차피 실패 시 스레드가 중단되기 때문이다.