간단한 프로젝트를 진행하던 도중, 예외 처리를 적용하는 시간을 갖게 되었다.
이론적으로는 많이 들어봤지만, 실제로 코딩해보거나 적용시킨 적은 별로 없었던 것 같다.
커스텀 예외를 직접 생성해서 적용하는 부분에 대해 정리해보는 시간을 가져보려고 한다.
@ControllerAdvice
를 사용하면 된다.@ExceptionHandler(WrongPasswordException.class)
public ResponseEntity<ExceptionResponseDto> handleWrongPasswordException() {
return ResponseEntity.badRequest().body(CustomException.WRONG_PASSWORD.toDto());
}
enum
으로 생성해서 관리한다.@RestControllerAdvice
를 선언한 클래스에서 ResponseEntity
를 활용해 상태 코드를 설정한 뒤, 예외 내용에 대한 DTO를 반환한다.사실, 커스텀 예외 클래스를 생성하는 것이 과연 옳은 판단일까라는 생각이 들어서 @ExceptionHandler
에 대해 생각해보는 시간을 잘 갖지 못했던 것 같다. 이미 존재하는 예외 클래스를 잘 활용하면 되지 않을까라는 생각이 존재했기 때문이다.
이번 프로젝트를 진행하면서, 이미 존재하는 예외 클래스만으론 상황에 따른 예외 처리를 제대로 해주지 못한다는 것을 깨달았다.
예를 들어, 게시글이 존재하지 않는 것과 비밀번호를 제대로 입력하지 않은 경우엔 둘 다 IllegalArgumentException
으로 처리하면 될거라는 생각을 가졌었다. 하지만, 생각이 짧았다는 것을 다음과 같은 이유를 통해 깨달았다.
그렇기에 커스텀 예외가 팔요한 것 같다.
이를 잘 활용하자.