NestJS에서의 자바스크립트 앱 에러 처리 방법

소개

NestJS는 자바스크립트 및 TypeScript로 개발된 프레임워크로, 서버 애플리케이션을 구축하기 위한 강력한 기능을 제공합니다. 애플리케이션을 개발하다보면 예기치 않은 에러가 발생할 수 있는데, 이러한 에러를 적절하게 처리하는 것은 중요합니다.

이번 글에서는 NestJS에서 자바스크립트 앱의 에러를 처리하는 방법에 대해 알아보겠습니다.

에러 처리 방법

  1. 글로벌 예외 필터(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',
          });
        }
      }
    }
    
  2. 모듈 예외 필터(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에서 자바스크립트 앱의 에러를 처리하는 방법을 알아보았습니다. 글로벌 예외 필터와 모듈 예외 필터를 사용하여 애플리케이션 전체의 예외를 처리하거나 특정 모듈에서 예외를 처리할 수 있습니다. 에러 처리는 안정성과 사용자 경험을 향상시키기 위해 반드시 고려해야 할 중요한 부분입니다.

#NestJS #자바스크립트