NestJS 异常过滤器
异常过滤器是 NestJS 核心的异常处理机制,用于统一捕获、处理应用中抛出的异常,替代框架默认的异常处理逻辑,实现自定义的响应格式、状态码控制、日志记录等能力。
生命周期位置
shell
客户端请求 --> 中间件 --> 守卫 --> 管道 --> 拦截器(前置) --> 控制器方法执行 --> 拦截器(后置) --> 异常过滤器 --> 返回响应异常过滤器模式
全局通用过滤器 + 局部业务过滤器 + 自定义异常类
核心能力
- 统一响应格式,降低前后端对接成本;
- 隔离异常处理逻辑,符合「单一职责」原则;
- 适配多运行环境,提升代码复用性;
- 标准化日志记录,便于问题排查。
总结
shell
1. 作用
异常过滤器是 NestJS 中处理应用程序抛出的异常的强大机制,有内置 API 也可以可自定义异常过滤器
2. 调用时机
客户端请求 --> 中间件 --> 守卫 --> 管道 --> 拦截器(前置) --> 控制器方法执行 --> 拦截器(后置) --> 异常过滤器 --> 返回响应
3. 使用场景:
全局异常处理、特定异常处理、HTTP异常处理、数据库/ORM异常处理、权限/认证异常、请求验证异常
4. 特点
程序出现异常或者抛出异常才会触发
5. 创建命令
nest g filter globalException
6. 应用级别(执行顺序: 方法 > 控制器 > 全局 )(与其他几个运行生命周期相反)
全局级异常过滤器
控制器级异常过滤器
方法级异常过滤器