Skip to content

NestJS 异常过滤器

异常过滤器是 NestJS 核心的异常处理机制,用于统一捕获、处理应用中抛出的异常,替代框架默认的异常处理逻辑,实现自定义的响应格式、状态码控制、日志记录等能力。

生命周期位置

shell
客户端请求 --> 中间件 --> 守卫 --> 管道 --> 拦截器(前置) --> 控制器方法执行 --> 拦截器(后置) --> 异常过滤器 --> 返回响应

异常过滤器模式

全局通用过滤器 + 局部业务过滤器 + 自定义异常类

核心能力

  1. 统一响应格式,降低前后端对接成本;
  2. 隔离异常处理逻辑,符合「单一职责」原则;
  3. 适配多运行环境,提升代码复用性;
  4. 标准化日志记录,便于问题排查。

总结

shell
1. 作用
   异常过滤器是 NestJS 中处理应用程序抛出的异常的强大机制,有内置 API 也可以可自定义异常过滤器
2. 调用时机
   客户端请求 --> 中间件 --> 守卫 --> 管道 --> 拦截器(前置) --> 控制器方法执行 --> 拦截器(后置) --> 异常过滤器 --> 返回响应
3. 使用场景:
   全局异常处理、特定异常处理、HTTP异常处理、数据库/ORM异常处理、权限/认证异常、请求验证异常
4. 特点
   程序出现异常或者抛出异常才会触发
5. 创建命令
   nest g filter globalException
6. 应用级别(执行顺序: 方法 > 控制器 > 全局 )(与其他几个运行生命周期相反)
   全局级异常过滤器
   控制器级异常过滤器
   方法级异常过滤器