반응형
IllegalArgumentException는 RuntimeException을 상속받고, 어떤 Argument가 잘못되어있는지 예외를 던지는 클래스입니다.
if (deliveryDate.isBefore(LocalDate.now())) {
throw new IllegalArgumentException("deliveryDate can't be earlier than " + LocalDate.now());
}
RuntimeException을 상속 O -> Unchecked Exception
RuntimeException을 상속 X -> Checked Exception
checked exception과 unchecked exception의 차이점?
checked exception은 다시 checked exception 던지거나 다시 try catch로 exception 던져야 합니다.
예외 처리를 클라이언트가 받았을 때 복구가 가능하지 않은 경우는 unchecked exception을 사용합니다.
주의 : 트랜잭션의 롤백과 예외처리는 별개로 생각해야 합니다.
간혹 가다 메서드 선언부에 unchecked exception을 선언하는 이유는 무엇일까?
public void updateDeliveryDate(LocalDate deliveryDate) throws IllegalArgumentException, NullPointerException {
...
}
선언을 안 하여도 사용할 수 있지만, 클라이언트에게 알려주고 싶을 때 사용할 수 있습니다. 이 메서드에서는 이러이러한 Exception을 명시적으로 알려줄 수 있습니다.
선언하지 않는 경우는 너무 많은 unchecked exception을 선언하게 되면 코드의 가독성을 떨어트릴 수 있기 때문입니다.
checked exception을 왜 사용하는 걸까?
해당 에러가 발생했을 경우 클라이언트가 이 exception의 후속처리를 해주기를 바란다면 checked exception를 사용합니다.
반응형
댓글