[교재 EffectiveJava] 아이템 72. 표준 예외를 사용하라
- Book/Effective Java
- 2021. 12. 15.
반응형
728x90
반응형
예외 재사용의 이점
예외는 재사용하는 것이 좋다. 자바 라이브러리는 대부분 API에서 쓰기에 충분한 수의 예외를 제공한다. 표준 예외를 재사용하면 얻는게 많다.
1) 개발한 API가 다른 사람이 익히고 사용하기가 쉬워진다.
2) API를 사용한 프로그램도 낯선 예외를 사용하지 않게 되어 읽기 쉽게 된다.
3) 예외 클래스 수가 적을수록 메모리 사용량도 줄고 클래스를 적재하는 시간도 적게 걸린다.
가장 많이 재사용되는 예외는 IllegalArgumentException이다. 호출자가 인수로 부적절한 값을 던질때 던지는 예외다. Exception, RunTimeException, Throwable, Error는 직접 재사용하지 말자.
널리 재사용되는 예외
예외 | 주요 쓰임 |
IllegalArgumentException | 허용하지 않는 값이 인수로 건네졌을때 (null은 따로 NullPointerException 로 처리) |
IllegalStateException | 객체가 메서드를 수행하기에 적절하지 않은 상태일때 |
NullPointerException | null을 허용하지 않는 메서드에 null을 건넸을때 |
IndexOutOfBoundsException | 인덱스가 범위를 넘어섰을때 |
ConcurrentModificationException | 허용하지않는 동시 수정이 발견됐을때 |
UnsupportedOperationException | 호출한 메서드를 지원하지 않을때 |
상황에 부합한다면 항상 표준 예외를 재사용하자. 이때 API 문서를 참고해서 그 예외가 어떤 상황에서 던져지는지를 꼭 확인해야한다. 예외의 이름 뿐만 아니라, 예외가 던져지는 맥락도 부합할 때만 재사용한다.
애매한 상황에서 예외 선택
종종 재사용할 예외를 선택하기에 어려울때도 있다.
** 예시 상황
카드 덱을 표현하는 객체가 있고, 인수로 건넨 수만큼의 카드를 뽑아 나눠주는 메서드를 제공한다고 해보자. 이때 덱에 남아있는 카드 수보다 큰 값을 건네면 어떤 예외가 던져야할까?
- IllegalArgumentException : 인수의 값이 너무 크다.
- IllegalStateExcpetion : 남은 카드 수가 너무 적다.
이럴 경우에는 인수 값이 무엇이었든 어차피 실패했을 거라면 IllegalStateExcpetion를, 그렇지 않으면 IllegalArgumentException를 던지자.
반응형
'Book > Effective Java' 카테고리의 다른 글
[교재 EffectiveJava] 아이템 74. 메서드가 던지는 모든 예외를 문서화하라 (0) | 2021.12.17 |
---|---|
[교재 EffectiveJava] 아이템 73. 추상화 수준에 맞는 예외를 던져라 (0) | 2021.12.15 |
[교재 EffectiveJava] 아이템 71. 필요 없는 검사 예외 사용은 피하라 (0) | 2021.12.14 |
[교재 EffectiveJava] 아이템 70. 복구할 수 있는 상황에는 검사 예외를, 프로그래밍 오류에는 런타임 예외를 사용하라 (0) | 2021.12.13 |
[교재 EffectiveJava] 아이템 69. 예외는 진짜 예외 상황에만 사용하라 (0) | 2021.12.12 |