Item 71 : 필요없는 검사 예외사용은 피하라
2021. 9. 7. 15:27
- 결과를 코드로 반환하거나 비검사 예외를 던지는 것과 달리, 검사 예외는 발생한 문제를 프로그래머가 처리하여 안정성을 높이게끔 해준다.
- 하지마 검사 예외를 과하게 쓰면 쓰기 불편한 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 {
... // 예외 상황에 대처한다.
}
'책 > 이펙티브자바' 카테고리의 다른 글
Item 73 : 추상화 수준에 맞는 예외를 던져라 (0) | 2021.09.09 |
---|---|
Item 72 : 표준 예외를 사용하라 (0) | 2021.09.08 |
Item 70 : 복구할 수 있는 상황에는 검사 예외를, 프로그래밍 오류에는 런타임 예외를 사용하라. (0) | 2021.09.07 |
Item 69 : 예외는 진짜 예외 상황에만 사용하라 (0) | 2021.09.05 |
Item 68 : 일반적으로 통용되는 명명 규칙을 따르라 (0) | 2021.09.04 |