Node.js 面试题
目录

请解释 NestJS 的异常处理机制。如何处理异常?

· 约 4 分钟读完 · 第 360 / 377 章

推荐答案

NestJS 提供了强大的异常处理机制,主要通过 Exception Filters 来处理应用程序中的异常。NestJS 内置了许多常见的 HTTP 异常类,如 BadRequestException、NotFoundException 等,开发者也可以自定义异常类。异常过滤器可以捕获这些异常,并根据需要返回特定的 HTTP 响应。

如何使用异常过滤器

  1. 内置异常类:NestJS 提供了多种内置的异常类,开发者可以直接抛出这些异常。例如:

  2. 自定义异常类:开发者可以通过继承 HttpException 类来创建自定义异常类。例如:

  3. 全局异常过滤器:可以通过 @Catch() 装饰器创建全局异常过滤器,捕获所有未处理的异常。例如:

  4. 应用异常过滤器:可以在控制器、方法或全局范围内应用异常过滤器。例如:

本题详细解读

异常处理机制的核心概念

NestJS 的异常处理机制基于 Exception Filters,它允许开发者在应用程序中捕获和处理异常。异常过滤器可以捕获同步和异步代码中的异常,并根据需要返回特定的 HTTP 响应。

内置异常类

NestJS 提供了多种内置的 HTTP 异常类,这些异常类继承自 HttpException。常见的异常类包括:

  • BadRequestException:400 错误
  • UnauthorizedException:401 错误
  • NotFoundException:404 错误
  • InternalServerErrorException:500 错误

这些异常类可以直接在代码中抛出,NestJS 会自动处理并返回相应的 HTTP 响应。

自定义异常类

如果内置的异常类不能满足需求,开发者可以通过继承 HttpException 类来创建自定义异常类。自定义异常类可以定义特定的错误消息和状态码。

全局异常过滤器

全局异常过滤器可以捕获应用程序中所有未处理的异常。通过实现 ExceptionFilter 接口,开发者可以自定义异常处理逻辑。全局异常过滤器通常用于捕获未预期的异常,并返回统一的错误响应。

应用异常过滤器

异常过滤器可以应用在控制器、方法或全局范围内。通过 @UseFilters() 装饰器,开发者可以指定特定的异常过滤器来处理特定范围的异常。全局异常过滤器通常通过 app.useGlobalFilters() 方法进行注册。

异常处理流程

  1. 抛出异常:在代码中抛出异常,可以是内置异常类或自定义异常类。
  2. 捕获异常:异常过滤器捕获抛出的异常。
  3. 处理异常:根据异常类型和过滤器逻辑,生成并返回相应的 HTTP 响应。
  4. 返回响应:将处理后的响应返回给客户端。

通过这种机制,NestJS 提供了灵活且强大的异常处理能力,帮助开发者构建健壮的应用程序。