Exception Filter

예외 필터 적용 범위

메서드와 컨트롤러 필터는 가까운 요청 흐름을 다듬고, 전역 필터는 모든 예외의 응답 규격을 통일한다.

Method

@UseFilters()

특정 라우트의 예외만 변환한다. 실험적인 응답 형식을 붙일 때 영향 범위가 가장 작다.

Controller

컨트롤러 단위

같은 리소스의 에러 메시지, 상태 코드, 추적 ID 정책을 한곳에서 맞춘다.

Global

APP_FILTER

응답 규격과 로깅 주입을 통일한다.

Domain

사용자 정의 예외

도메인 예외를 필터에서 클라이언트 응답으로 바꾼다.

throw

서비스 또는 컨트롤러

  • HttpException 계열은 status와 response payload를 함께 전달한다.
  • 도메인 예외는 의미를 잃지 않도록 이름과 필드를 명확히 둔다.

catch

ExceptionFilter

  • ArgumentsHost에서 요청, 응답, HTTP 컨텍스트를 꺼낸다.
  • timestamp, path, code, message를 일관된 JSON으로 만든다.

빠른 등록

app.useGlobalFilters(new Filter())

부트스트랩에서 직접 인스턴스를 만들기 때문에 간단하지만, Nest container가 관리하는 의존성 주입과 lifecycle을 놓치기 쉽다.

운영 권장

{ provide: APP_FILTER, useClass: Filter }

모듈 provider로 등록되어 Logger, ConfigService, tracing helper를 주입받고 테스트 모듈에서도 같은 방식으로 교체할 수 있다.