// http.exception-filter.ts
import ...
@Catch(HttpException) // @Catch()에 넣은 에러들을 잡아냄
export class HttpExceptionFilter implements ExceptionFilter {
catch(exception: HttpException, host: ArgumentsHost) {
const context = host.switchToHttp();
const request = context.getRequest();
const response = context.getResponse();
const status = exception.getStatus();
// 에러 로그 파일 생성, 에러 모니터링 시스템에 API 콜 등 여러 작업이 가능함
// 사실 에러 응답 변환보다 이렇게 추가 작업을 할 수 있다는 것이 유용함
response
.status(status)
.json({ // Exception 응답을 다음과 같은 형식으로 바꿔줌
statusCode: status,
message: exception.message,
timestamp: new Date().toLocaleString('kr'),
path: request.url,
});
}
}
원래 에러 발생시 응답

위 필터를 지정하면 다음과 같이 지정한 형식으로 출력됨
@UseFilters(HttpExceptionFilter) // 필요한 곳에 필터 추가

만약 전체적으로 필터를 적용하고 싶다면
// main.ts
async function bootstrap() {
// 생략 ..
app.useGlobalFilters(new HttpExceptionFilter());
// 생략 ..
과 같이 전체적으로 필터를 적용할 수 있음