본문 바로가기

개발이야기/Effective Java

[Effective Java]표준 예외를 사용하라


자바 플랫폼 라이블러리에는 대부분의 API가 필요로 하는 기본적인 unchecked exception들이 갖추어져 있다. 이미 있는 예외들은 재사용하면 아래와 같은 좋은 점이 있다.


1. 배우기 쉽고 사용하기 편리한 API를 만들 수 있다.

2. 표준 예외를 사용한 API는 가독성이 높다.

3. 예외 클래스 개수를 줄이면 프로그램의 메모리 요구량이 줄어들고, 클래스를 로딩하는 시간도 줄어든다.(확인 불가..)


아래는 가장 널리 재사용 되는 예외를 정리한 표이다.


 예외 

 사용법 

 IllegalArgumentException

 null이 아닌 인자의 값이 잘못되었을 때

 IllegalStateException

 객체 상태가 메서드 호출을 처리하기에 적절치 않을 때

 NullPointException

 null 값을 받으면 안 되는 인자에 null이 전달되었을 때

 IndexOutOfBoundsException

 인자로 주어진 첨자가 허용 범위를 벗어났을 때

 ConcurrentModificationException

 병렬적 사용이 금지된 객체에 대한 병렬 접근이 탐지 되었을 때

 UnsupportedOperationException

 객체가 해당 메서드를 지원하지 않을 때


하지만 위 표준 예외를 사용하기 위해서는 예외를 발생시키는 조건이 해당 예외의 문서에 기술된 것과 일치해야 한다.


이름만 보고 재사용하면 혼란을 일으킬 수 있다.


또한 예외는 상호 배제적(mutually exclusive)이지 않다는 사실을 생각해야한다.


예를 들어 아래와 같은 상황이 있을 것이다.


 숫자를 입력받아 해당 숫자만큼 카드를 나눠주는 메서드가 있다고 해보자. 만약 인자로 전달된 숫자가 너무 크다면 인자의 값이 너무 컸다는 뜻에서 IllegalArgumentException을 발생 시킬수도 있고 혹은 객체의 현 상태로는 메서드 호출을 처리할 수 없다는 뜻에서 IllegalStateException을 발생 시킬 수도 있다.


End of Document