기록이 힘이다.

[이펙티브 자바] 72. 표준 예외를 사용하라 본문

JAVA

[이펙티브 자바] 72. 표준 예외를 사용하라

dev22 2023. 4. 24. 21:06
728x90

표준 예외를 재사용하면 얻는 게 많다. 그중 최고는 여러분의 API가 다른 사람이 익히고 사용하기 쉬워진다는 것이다. 가장 많이 재사용되는 예외는 IllegalArgumentException이다. NullpointerException, IndexOutOfBoundsException

 

ConcurrentModificationException은 단일 스레드에서 사용하려고 설계한 객체를 여러 스레드가 동시에 수정하려 할 때 던진다. UnsupportedOperationException은 클라이언트가 요청한 동작을 대상 객체가 지원하지 않을 때 던진다.

 

Exception, RuntimeException, Throwable, Error는 직접 재사용하지 말자.이 클래스들은 추상 클래스라고 생각하길 바란다. 이 예외들은 다른 예외들의 상위 클래스이므로, 즉 여러 성격의 예외들을 포괄하는 클래스이므로 안정적으로 테스트할 수 없다.

 

예외 주요쓰임

IllegalArgumentException 허용하지 않는 값이 인수로 건네졌을 때(null은 따로 NullpointerException으로 처리)
IllegalStateException 객체가 메서드를 수행하기에 적절하지 않은 상태일 때
NullpointerException null을 허용하지 않는 메서드에 null을 건넸을 때
IndexOutOfBoundsException 인덱스가 범위를 넘어섰을 때
ConcurrentModificationException 허용하지 않는 동시 수정이 발견됐을 때
UnsupportedOperationException 호출한 메서드를 지원하지 않을 때

상황에 부합한다면 항상 표준 예외를 재사용하자. 이때 API 문서를 참고해 그 예외가 어떤 상황에서 던져지는지 꼭 확인해야 한다. 예외의 이름뿐 아니라 예외가 던져지는 맥락도 부합할 때만 재사용한다.

인수 값이 무엇이었든 어차피 실패했을 거라면 IllegalStateException, 그렇지 않으면 IllegalArgumentException