• 결과를 코드로 반환하거나 비검사 예외를 던지는 것과 달리, 검사 예외는 발생한 문제를 프로그래머가 처리하여 안정성을 높이게끔 해준다.
  • 하지마 검사 예외를 과하게 쓰면 쓰기 불편한 API가 된다.
  • 스트림 안에서 검사 예외의 직접 사용이 어렵기 때문에 자바 8부터 부담도 커졌다.

 

  • 메소드가 단 하나의 검사 예외만 던질 때 부담이 크다
    • 개발자는 한가지 예외때문에 try-catch 블록을 추가해야한다.
    • 이런 경우에 스트림에서 직접 사용도 안된다.

 

검사 예외를 회피하는 방법

  • 적절한 결과 타입을 담은 옵셔널을 반환(아이템 55)
    • 단점은 예외가 발생한 이유를 알려주는 부가 정보를 담을 수 없다는 점

https://puzzle-making.tistory.com/173?category=957310

 

Item 55 : 옵셔널 반환은 신중히 하라

자바 버전 8이 되면서 Optional 을 이용해 보통은 T를 반환해야 하지만 특정조건에서는 아무것도 반환하지 않을 수 있게 되었다. //컬렉션에서 최대값을 구하는 메소드 public static > E max(Collection c) {

puzzle-making.tistory.com

 

  • 검사 예외를 던지는 메소드를 2개로 쪼개 비검사 예외로 바꿀 수 있음
//검사 예외를 던지는 메소드 - 리팩터링 전

try {
    obj.action(args);
} catch (TheCheckedException e) {
    ... // 예외 상황에 대처
}
//상태 검사 메소드와 비검사 예외를 던지는 메소드 - 리팩터링 후
if (obj.actionPermitted(args)) {
    obj.action(args);
} else {
    ... // 예외 상황에 대처한다.
}

+ Recent posts