예외 계약

예외 필터 응답 변환

컨트롤러와 서비스는 NotFoundException, ConflictException, 사용자 정의 예외를 던지고, 필터는 상태 코드와 요청 경로, 시간, 메시지를 일관된 JSON으로 정리한다.

throw

도메인 상황을 예외명으로 남김

UserAlreadyExistsException처럼 서비스 코드에 비즈니스 실패 이유가 드러나면 호출부의 의도가 선명해진다.

가독성
catch

@Catch(HttpException)

필터는 exception.getStatus()getResponse()를 읽어 기본 예외와 사용자 정의 예외를 같은 방식으로 처리한다.

중앙 집중 처리
shape

statusCode, path, message

응답 형식에 timestamp와 요청 URL을 포함하면 프론트엔드 안내와 서버 로그 추적이 쉬워진다.

일관된 JSON
범위

전역 등록은 DI 방식 선택

useGlobalFilters(new HttpExceptionFilter())는 간단하지만 로깅 서비스 주입이 필요하면 APP_FILTER 프로바이더가 더 알맞다.

확장성