10장. 예외 - GOAL
예외를 제대로 활용한다면 프로그램의 가독성, 신뢰성, 유지보수성이 높아진다.
그러나 잘못 사용하면 반대의 효과만 나타난다.
예외를 효과적으로 활용하는 방법을 습득하자.
아이템72. 표준 예외를 사용하라
예외도 재사용하는 것이 좋으며, 자바 라이브러리는 대부분 API에서 쓰기에 충분한 수의 예외를 제공한다.
표준 예외 사용의 장점
- 다른 사람이 익히고 사용하기 쉬워진다.
- 많은 프로그래머에게 이미 익숙해진 규약을 그대로 따르기 때문이다.
- 프로그램 코드도 읽기 쉽다.
- 에외 클래스가 적을수록 메모리 사용량도 줄고, 클래스를 적재하는 시간도 적게 걸린다.
자주 재사용되는 예외
IllegalArgumentExceptoin
: 호출자가 인수로 부적절한 값을 넘길 때 던지는 예외IllegalStateException
: 대상 객체의 상태가 호출된 메서드를 수행하기에 접합하지 않을 때 던진다.- ex) 제대로 초기화하지 않았을 때
NullPointerException
: null을 허용하지 않는 메서드에 null을 건넸을 때ConcurrentModificationException
: 허용하지 않는 동시 수정이 발견됐을 때 (단일 스레드에서 사용하려고 설계한 객체를 여러 스레드가 동시에 수정하려 할 때)UnsupportedOperationException
: 호출된 메서드를 지원하지 않을 때ArithmeticException
,NumberFormatException
: 복소수나 유리수를 다루는 객체를 작성할 때
참고.
IllegalStateException
: 인수 값이 무엇이었든 어차피 실패IllegalArgumentExceptoin
: 인수 값이 제대로였다면, 성공할 경우
결론
상황에 부합하다면, 항상 표준 예외를 재사용하자. API문서를 참고해 그 예외가 어떤 상황에서 던져지는지 꼭 확인해야 한다. 예외의 이름뿐 아니라 예외가 던져지는 맥락도 부합할 때만 재사용한다.
'Java > 이펙티브 자바' 카테고리의 다른 글
[이펙티브자바 - 아이템74] 메서드가 던지는 모든 예외를 문서화하라 (0) | 2021.12.11 |
---|---|
[이펙티브자바 - 아이템73] 추상화 수준에 맞는 예외를 던지라 (0) | 2021.12.11 |
[이펙티브자바 - 아이템71] 필요 없는 검사 예외 사용은 피하라 (0) | 2021.12.10 |
[이펙티브자바 - 아이템70] 복구할 수 있는 상황에는 검사 예외를, 프로그래밍 오류에는 런타임 예외를 사용하라 (0) | 2021.12.10 |
[이펙티브자바 - 아이템69] 예외는 진짜 예외 상황에만 사용하라 (0) | 2021.12.10 |