[이펙티브 자바] 아이템 71. 필요 없는 검사 예외 사용은 피하라

June·2022년 3월 28일
1

[이펙티브자바]

목록 보기
64/72

검사 예외를 잘 사용하면 발생한 문제를 프로그래머가 처리하여 안전성을 높여준다.
하지만 과하게 쓰면 오히려 불편하게 된다.

어떤 메서드가 검사 예외를 던질 수 있게 선언됐다면, 이를 호출하는 쪽에서 catch 블록을 두거나 바깥으로 던져서 전파해야 한다. 이는 클라이언트에게 부담을 준다. 또한 예외를 던지는 메서드는 스트림 안에서 직접 사용할 수 없기 때문에 자바 8부터 부담이 더 커졌다.

검사 예외를 회피하는 가장 쉬운 방법은 적절한 결과 타입을 담은 옵셔널을 반환하는 것이다 (아이템 55).

또 다른 방법은 검사 예외를 던지는 메서드를 2개로 쪼개 비검사 예외로 바꿀 수 있다.

리팩터링 전

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

리팩터링 후

if (obj.actionPermitted(args)) {
    obj.action(args);
} else {
    ...
}

이 리팩터링을 모든 상황에 적용할 수도 없고, 리팩터링 후가 딱히 더 아름답지도 않다. 하지만 더 유연하다.

0개의 댓글