검사 예외는 발생한 문제를 프로그래머가 처리하여 안전성을 높이게 해주지만, 검사 예외를 과하게 사용하면 쓰기 불편한 api가 됨
(어떤 메서드가 검사 예외를 던질 수 있다고 선언되면, 이를 호출할 때 catch 를 사용해 예외를 잡거나 예외를 더 밖으로 전파해야 함)
예외를 던지는 메서드는 스트림 안에서 직접 사용할 수 없음
checked exception 사용 예시
} catch(CheckedException e) {
throw new AssertionError();
}
} catch(CheckedException e) {
e.printStackTrace();
System.exit();
}
→ Checked Exception ****하나를 위해 사용자는 try문을 추가해야 하며 스트림에서 직접 사용할 수 없음
검사 예외를 회피하는 방법
적절한 Optional 반환
검사 예외를 던지는 메서드를 2개로 나누어 비검사 예외로 바꾸기
//리팩터링 전
try {
obj.action(args);
} catch (TheCheckedException e) {
// ...
}
//리팩터링 후
if (obj.actionPermitted(args)) {
obj.action(args);
} else {
// ...
}
actionPermitted가 예외가 던져질지 여부를 반환
⇒ 더 유연해짐