요약
•
일반적인 상황에서의 예외라면, 예외를 만들어서 사용하지말고 가급적 표준 예외들을 재사용하자.
표준 예외 재사용하기
•
표준 예외를 재사용하면 사용한 API가 다른 사람들에게 익히고 사용하기 쉬워진다. 또한 가독성이 좋아지고, 예외 클래스 수가 적을수록 메모리 사용량도 줄고 클래스를 적재하는 시간도 적게 걸린다.
예외 | 주요 쓰임 |
IlleagalArgumentException | 허용하지 않은 값이 인수로 전달받았을 때(null인 경우에는 따로 NPE로 처리) |
IlleaglStateException | 객체가 메서드를 수행하기에 적절하지 않은 상태일 때(초기화 되지 않음 등등) |
NullPointerException | null을 허용하지 않는 메서드에 null을 건넸을 때 |
IndexOutOfBoundsException | 인덱스가 범위를 넘어섰을 때 |
ConcurrentModificationException | 허용하지 않는 동시 수정이 발견됐을 때(단일 스레드에서 사용하려 만든 객체를 여러 스레드에서 수정하려 할 때) |
UnsupportedOperationException | 호출한 메서드를 지원하지 않을 때(클라이언트가 요청한 동작을 대상 객체가 지원하지 않을 때, 주로 인터페이스를 구현하는 경우 일부를 구현할 수 없을 때 사용) |
•
Exception, RunTimeException, Throwable, Error는 직접 재사용하지 말자. 여러 성격의 예외들을 포괄하는 클래스이기 때문에, 이 클래스들을 추상 클래스라 생각하고 상속받아 사용하고 직접 사용하지는 말자.