자동차 미션을 진행하는 도중에 custom exception을 사용해서 미션을 진행했는데
과연 이걸 사용한 근거가 명확한가에 대해 생각을 했다.
처음에는 재사용성과 의미 있는 이름 때문에 사용했다고 생각했는데
실질적으로 custom exception에서 따로 처리되는 일은 없었다.
그렇다면 어떤 경우에 custom exception을 사용하는 게 효과적일까 ?
자바 표준 예외들에는 다양한 장점을 가지는 기능이 있다.
Custom Exception의 의도는 자바의 표준 예외들로 표현할 수 없는 정보나 기능을 제공하는 것이다.
그렇지 않으면 JDK가 이미 제공하고 있는 수많은 예외에 비해 어떠한 장점도 제공하지 못하게 된다.
어떠한 장점도 제공할 수 없는 Custom Exception를 만드는것 보다 오히려 UnsupportedOperationException 이나
IllegalArgumentException 과 같이 표준 예외들 중 하나를 사용하는 것이 좋다.
CarNameBlankException만으로 자동차 이름이 비어 있다는 상황을 알 수 있다.
custom exception의 이름으로 예외 발생 상황을 유추할 수 있는 정보를 제공한다.
but 이 부분은 예외 메시지로도 충분히 의미를 전달할 수 있다.
유효하지 않은 입력값에 대한 예외이므로 IllegalArgumentException
을 사용하고 메시지만 예외사항에 맞게
재정의 해줘도 충분히 의미 파악이 가능하다.
표준예외와 메시지만으로 충분히 정보 전달이 가능하다. 하지만 전달하는 정보의 양이 많아지면 많아질수록
예외 발생 코드가 더러워지고 같은 예외가 발생하는 곳이 많아진다면 점점 더 심각해질 것이다.
Custom Exception을 만들어서 예외에 필요한 메시지, 전달할 정보의 데이터, 편의 메소드들을 한 곳에서 관리한다면
객체의 책임이 명확하고 분리된 깔끔한 코드로 작성할 수 있다. 또 같은 예외가 여러 곳에서 사용된다면
이 장점은 극대화 된다.