用途:该技能面向 NestJS 项目,讲解如何使用异常过滤器(Exception Filters)处理请求处理过程中抛出的异常,定制返回给客户端的错误响应,并记录异常用于监控与调试。异常过滤器在请求生命周期中位于拦截器之后,是发送响应前的最后一步。
主要能力:可捕获特定异常类型或全部异常;自定义错误响应结构(如状态码、时间戳、路径、方法、请求 ID);记录异常日志;针对不同异常类型分别处理;将第三方库错误转换为 HTTP 异常;添加请求 ID 等元数据;继承内置 BaseExceptionFilter 扩展默认行为;通过依赖注入在过滤器中注入 ConfigService、LoggerService 等。
使用方式:类上使用 @Catch(异常类型) 装饰并实现 ExceptionFilter 的 catch(exception, host) 方法,通过 ArgumentsHost 的 switchToHttp() 取得请求与响应对象后发送响应。可用 @UseFilters() 绑定在方法或控制器上,或在模块 providers 中使用 APP_FILTER 注册全局过滤器,也可在 main.ts 中通过 app.useGlobalFilters() 注册。NestJS 内置多种标准 HTTP 异常,如 BadRequestException、NotFoundException、UnauthorizedException 等。
适用场景:需要统一前后端错误契约、按异常类型区别响应、记录错误日志、隐藏生产环境堆栈信息、将 TypeORM 等数据库错误映射为合适的 HTTP 状态码时。
限制:资料未提供该技能的安装命令、收费与价格信息。过滤器需自行保证向客户端发送响应;生产环境不应暴露堆栈跟踪等敏感信息;具体异常处理逻辑需按项目实际情况编写。