NestJS에서의 자바스크립트 앱 에러 처리 방법
소개
NestJS는 자바스크립트 및 TypeScript로 개발된 프레임워크로, 서버 애플리케이션을 구축하기 위한 강력한 기능을 제공합니다. 애플리케이션을 개발하다보면 예기치 않은 에러가 발생할 수 있는데, 이러한 에러를 적절하게 처리하는 것은 중요합니다.
이번 글에서는 NestJS에서 자바스크립트 앱의 에러를 처리하는 방법에 대해 알아보겠습니다.
에러 처리 방법
-
글로벌 예외 필터(Global Exception Filter) 사용
NestJS에서는 글로벌 예외 필터를 사용하여 예외를 처리할 수 있습니다. 글로벌 예외 필터를 설정하면 애플리케이션 전체에서 발생하는 예외를 한 곳에서 처리할 수 있습니다.
// main.ts import { NestFactory } from '@nestjs/core'; import { AppModule } from './app.module'; import { HttpExceptionFilter } from './common/http-exception.filter'; async function bootstrap() { const app = await NestFactory.create(AppModule); app.useGlobalFilters(new HttpExceptionFilter()); await app.listen(3000); } bootstrap();
// http-exception.filter.ts import { Catch, HttpException, ExceptionFilter, ArgumentsHost } from '@nestjs/common'; import { Response } from 'express'; @Catch() export class HttpExceptionFilter implements ExceptionFilter { catch(exception: unknown, host: ArgumentsHost) { const ctx = host.switchToHttp(); const response = ctx.getResponse<Response>(); if (exception instanceof HttpException) { const status = exception.getStatus(); const message = exception.getResponse(); response.status(status).json({ statusCode: status, message: message, }); } else { response.status(500).json({ statusCode: 500, message: 'Internal Server Error', }); } } }
-
모듈 예외 필터(Module Exception Filter) 사용
글로벌 예외 필터 대신, 특정 모듈에서만 예외를 처리하려면 모듈 예외 필터를 사용할 수 있습니다. 모듈 예외 필터는 해당 모듈에 적용되는 예외 처리 로직을 정의할 수 있습니다.
// cats.module.ts import { Module } from '@nestjs/common'; import { CatsController } from './cats.controller'; import { CatsService } from './cats.service'; import { HttpExceptionFilter } from './common/http-exception.filter'; @Module({ controllers: [CatsController], providers: [CatsService], exports: [CatsService], // 모듈에 예외 필터 추가 providers: [ { provide: APP_FILTER, useClass: HttpExceptionFilter, }, ], }) export class CatsModule {}
요약
NestJS에서 자바스크립트 앱의 에러를 처리하는 방법을 알아보았습니다. 글로벌 예외 필터와 모듈 예외 필터를 사용하여 애플리케이션 전체의 예외를 처리하거나 특정 모듈에서 예외를 처리할 수 있습니다. 에러 처리는 안정성과 사용자 경험을 향상시키기 위해 반드시 고려해야 할 중요한 부분입니다.