표준 예외 재사용의 장점
- 다른 사람이 API를 익히고 사용하기 쉬워집니다.
- 낯선 예외를 사용하지 않으므로 코드의 가독성이 높아집니다.
- 예외 클래스의 수가 적을수록 메모리 사용량도 줄고 클래스 로딩시간도 줄어듭니다.
많이 사용되는 예외
IllegalArgumentException
- 메서드의 파라미터로 부적절한 값이 들어왔을 때 던지는 예외입니다.
- null이 들어오면 관례상 NullPointerException 예외를 사용합니다.
- 시퀀스 허용범위를 넘기는 경우 IndexOutOfBoundsException 예외를 사용합니다.
IllegalStateException
- 객체의 상태가 호출된 메서드의 수행에 부적합할 때 사용합니다.(초기화되지 않은 객체를 사용하려 할 때)
ConcurrentModificationException
- 단일스레드에서 사용하려고 설게한 객체를 여러 스레드가 동시에 수정하려고할 때 사용합니다.
- 동시 수정을 안정적으로 검출할 방법이 없기 때문에 일반적으로 문제가 생길 가능성 정도만 알려주는 역할로 쓰입니다.
UnsupportedOperationException
- 클라이언트가 호출한 메서드를 지원하지 않을 때 사용합니다.
ArithmeticException
- 복소수나 유리수를 다루는 개체를 다룰 때 사용합니다.
- 10/0과 같은 연산을 수행하려는 경우 사용합니다.
NumberFormatException
- 복소수나 유리수를 다루는 개체를 다룰 때 사용합니다.
- Integer 자리에 String이 오는경우 사용할 수 있습니ㅏㄷ.
예외 재사용시 주의사항
- Exception, RuntimeException, Throwable, Error는 직접 재사용하면 안됩니다.
- 예외는 이름뿐만 아니라 예외의 맥락이 부합할 때만 예외를 재사용합니다.
- 예외는 직렬화 할 수 있습니다. 직렬화에는 많은 부담이 따르므로 나만의 예외가 꼭 필요한지 생각해서 사용합니다.
반응형