어떤 메서드가 검사 예외를 던질 수 있다고 선언됐다면, 이를 호출하는 코드에서는
catch 블록을 두어 그 예외를 붙잡아 처리하거나 더 바깥으로 던져 문제를 전파해야만 한다.
어느 쪽이든 API 사용자에게 부담을 준다. 더구나 검사 예외를 던지는 메서드는 스트림안에서
직접 사용할 수 없기 때문에 자바 8부터는 부담이 더욱 커졌다.
try{
obj.action(args);
} catch(TheCheckedException e) {
...예외상황에 대처한다.
}
if(obj.actionPermitted(args)){
obj.action(args);
}else{
...예외상황에 대처한다.
}
검사 예외는 프로그램의 안전성을 높여주지만, 남용하면 쓰기 고통스러운 API를 낳는다. API 호추자가 예외 상호아에서 복구할 방법이 없다면 비검사 예외를 던지자. 복구가 가능하고 호출자가 그 처리를 해주길 바란다면, 우선 옵셔널을 반환해도 될지 고민하자. 옵셔널만으로는 상호아을 처리하지 못할 경우 검사예외를 던지자.