표준 예외를 재사용하는 것으로 얻을 수 있는 이점은 다음과 같다.
1. 표준 예외는 많은 프로그래머에게 익숙한 규약을 따른다. 따라서 내가 작성한 API를 다른 사람이 익히고 사용하기
쉬워진다.
2. 예외 클래스 수가 적으면 메모리 사용량이 줄고 클래스를 적재하는 시간도 적게 걸린다.
많이 사용되는 예외들은 다음과 같다.
예외 | 사용처 |
IllegalArgumentException | 허용하지 않는 값이 인수로 건네졌을 때(null은 따로 NullPointerException 으로 처리) |
IllegalStateException | 객체가 메서드를 수행하기에 적절하지 않은 상태일 때 |
NullPointerExcetpion | null을 허용하지 않는 메서드에 null을 건넸을 때 |
IndexOutOfBoundsException | 인덱스가 범위를 넘어섰을 때 |
ConcurrentModificationException | 허용하지 않는 동시 수정이 발견됐을 때. 단일 스레드에서 사용하려고 설계한 객체를 여러 스레드가 동시에 수정할 때 사용된다. 동시수정을 확실히 검출할 안정된 방법이 없기 때문에 문제가 생길 가능성을 알리는 정도로만 사용된다. |
UnsupportedOperationException | 호출한 메서드를 지원하지 않을 때 |
ArithmeticException, NumberFormatException | 복소수, 유리수를 다루는 객체에서 발생한 예외 |
Exception, RuntimeException, Throwable, Error 는 직접 재사용하지 말라. 이들을 추상 클래스라 생각하라. 이들은 다른 예외들의 상위 클래스이고 여러 성격의 예외들을 포괄하는 클래스다. 따라서 안정적인 테스트가 불가하다.
출처 - 이펙티브 자바