[교재 EffectiveJava] 아이템 72. 표준 예외를 사용하라

반응형
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를 던지자.

 

 

반응형

Designed by JB FACTORY