返回

Nest.js: 处理错误和异常的艺术

前端

Nest.js 错误异常处理

在构建现代应用程序时,处理错误和异常至关重要。Nest.js 提供了一个健壮的错误处理机制,可帮助您优雅地处理未处理的异常,并为最终用户提供友好且有意义的响应。

默认的异常过滤器

Nest.js 内置了一系列异常过滤器,可用于捕获和处理常见的错误。这些过滤器可以自动应用于您的应用程序,无需任何显式配置。

HttpExceptionFilter

处理 HTTP 异常,如 404 Not Found401 Unauthorized。它将返回适当的 HTTP 状态码和一个友好的错误消息。

ValidationPipe

验证传入请求的主体是否符合指定的模式。如果验证失败,它将返回一个 BadRequestException,其中包含验证错误的详细信息。

ClassSerializerInterceptor

拦截响应并将其序列化为 JSON 或其他指定的格式。它还处理转换错误,并在必要时返回适当的 HTTP 状态码。

自定义异常过滤器

除了内置的过滤器外,您还可以创建自定义过滤器来处理特定类型的错误。自定义过滤器可以为您提供对错误处理过程的更精细控制,并允许您自定义错误响应。

要创建自定义过滤器,您需要实现 ExceptionFilter 接口。该接口要求您提供一个 catch 方法,该方法将接收抛出的异常并返回一个 Observable,其中包含 HTTP 响应。

使用异常过滤器

要使用异常过滤器,您可以在模块的 providers 数组中注册它们。例如:

@Module({
  providers: [MyCustomExceptionFilter],
})
export class MyModule {}

注册后,您的自定义过滤器将自动应用于应用程序。

自定义错误响应

使用自定义异常过滤器,您可以自定义错误响应。 catch 方法返回的 Observable 可以包含以下内容:

  • 一个带有自定义消息和状态码的 HTTP 响应对象
  • 一个带有自定义错误对象的可观察序列,该错误对象将被序列化为 JSON 并作为响应的一部分返回
  • 一个可观察的序列,其中包含另一个异常,将被进一步处理

结论

Nest.js 的错误处理机制提供了对异常处理过程的全面控制。通过内置异常过滤器和创建自定义过滤器,您可以为最终用户提供友好且有意义的错误响应,同时保持应用程序的健壮性。