요약

되도록이면 표준 예외를 재사용 하자. 이유는

  1. 내가 작성한 API가 다른 사람이 익히고 사용하기 쉬워진다
  2. 코드를 읽기 쉬워진다
  3. 표준 예외를 사용하면 예외 클래스 수가 적어지므로, 메모리 사용량과 클래스 적재 시간이 감소된다

 

표준 예외를 사용하자

 

이점

표준 예외를 사용하면 다음과 같은 이점이 있다.

  1. 내가 작성한 API가 다른 사람이 익히고 사용하기 쉬워진다
  2. 코드를 읽기 쉬워진다
  3. 표준 예외를 사용하면 예외 클래스 수가 적어지므로, 메모리 사용량과 클래스 적재 시간이 감소된다

 

주의할 점

  1. API 문서를 참고해 상황과 맥락에 맞는 예외를 선택해 재사용하자
  2. Exception, RuntimeException, Throwable, Error는 직접 재사용하지 말자
    1. 위 클래스들은 여러 성격의 예외들을 포괄하는 클래스이므로, 안정적으로 테스트할 수 없기 때문이다
  3. 더 많은 정보를 제공하길 원한다면 표준 예외를 확장가능하지만, 예외는 직렬화할 수 있어 많은 부담이 따른다
    1. 따라서, 되도록이면 커스텀 예외는 만들지 않도록 하자

 

표준 예외 재사용 예시

  1. IllegalArgumentException
    1. 허용하지 않는 값이 인수가 건네졌을 때 사용하는 예외
    2. null로 넘어온 것은 NullPointerException으로 따로 처리한다
  2. IllegalStateException
    1. 대상 객체의 상태가 호출된 메서드를 수행하기 적합하지 않을 때 사용하는 예외
    2. 주로 초기화되지 않은 객체를 사용하려 할 때 던질 수 있다
  3. NullPointerException
    1. 메서드 인수로 null 값이 넘어왔을 때 사용
  4. IndexOutOfBoundsException
    1. 어떤 시퀀스의 허용 범위를 넘는 값을 건넬 때 사용하는 예외
  5. ConcurrentModificationException
    1. 단일 스레드에서 사용하려고 설계한 객체를 여러 스레드가 동시에 수정하려 할 때 사용하는 예외
    2. 동시 수정을 확실히 검출할 수 있는 안정된 방법은 없으니, 문제가 생길 가능성을 알려주는 정도의 역할
  6. UnSupportedOperationException
    1. 클라이언트가 요청한 동작을 대상 객체가 지원하지 않을 때 사용하는 예외
    2. 예시) List 구현체에 remove() 호출 할 때 UnSupportedOperationException이 발생

+ Recent posts