HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
📖
공부한 책
/
📒
Effective Java
/
아이템 72: 표준 예외를 사용하라

아이템 72: 표준 예외를 사용하라

💡
상황에 부합한다면 항상 표준 예외를 재사용 하자. 이 때 API 문서를 참고해 그 예외가 어떤 상황에서 던져 지는 지 꼭 확인해야 한다. 예외의 이름 뿐 아니라 예외가 던져지는 맥락도 부합할 때만 재사용한다 더 많은 정보를 제공하기 원하면 표준 예외를 확장해도 좋다. 단, 예외는 직렬화 할 수 있다는 사실을 기억하자. (직렬화에는 많은 부담이 따르니) 이 사실만으로도 나만의 예외를 새로 만들지 않아야 할 근거로 충분할 수 있다

표준 예외 사용시 장점

  • 재사용 증가 → 우리가 작성한 API가 다른 사람이 익히고 사용하기 쉬워진다는 것 (많은 프로그래머에게 이미 익숙해진 규약을 그대로 따르기에)
  • 우리 API를 사용한 프로그램도 낯선 예외를 사용하지 않게 되어 읽기 쉽게 된다는 장점도 큼
  • 예외 클래스 수가 적을수록 메모리 사용량도 줄고 클래스를 적재하는 시간도 적게 걸림

자주 재사용되는 예외

예외
주요 쓰임
IllegalArgumentException
허용하지 않는 값이 인수로 건네졌을 때(null은 따로 NullPointerException으로 처리)
IllegalStateException
객체가 메서드를 수행하기에 적절하지 않은 상태일 때. 예로 제대로 초기화되지 않은 객체를 사용하려 할 때 던질 수 있음
NullPointerException
null을 허용하지 않는 메서드에 null을 건넸을 때
IndexOutOfBoundException
인덱스가 범위를 넘어섰을 때
ConcurrentModificationException
허용하지 않는 동시 수정이 발견 됐을 때
UnsupportedOperationException
호출한 메서드를 지원하지 않을 때
  • Exception, RuntimeException, Throwable, Error는 직접 재사용하지 말자
  • IllegalArgumentException과 IllegalStateException 사이에 어떤 예외를 사용해야 할 지 헷갈릴 때의 기준
    • 인수 값이 무엇이었든 어차피 실패했을 거라면 IllegalStateException
    • 그렇지 않으면 IllegalArgumentException