javascript - 未调用nestjs异常过滤器
问题描述
我正在尝试在我的 NestJS 应用程序中使用异常过滤器。我按照此处找到的说明设置我的 global ExceptionFilter
,如下所示:
@Catch()
export class DemoExceptionFilter implements ExceptionFilter
{
private readonly logger: Logger;
constructor()
{
this.logger = new Logger(DemoExceptionFilter .name);
}
public catch(exception: unknown, host: ArgumentsHost): void
{
this.logger.log(exception);
}
}
在我的 AppModule 中,我以DemoExceptionFilter
这种方式注册:
@Module({
...
providers: [
...
{
provide: APP_FILTER,
useClass: DemoExceptionFilter
}
...
]
})
当我在代码中的某处抛出异常时,NestJS 在控制台中记录了该异常,但DemoExceptionFilter
没有调用我的异常。
我也试过
app.useGlobalFilters(new DemoExceptionFilter());
in main.ts
,这也不起作用。
我错过了什么?
解决方案
在文档中,它说明了将应用全局异常过滤器的位置:
全局范围的过滤器用于整个应用程序,用于每个控制器和每个路由处理程序。
它们不用于应用程序启动。因此,如果您想测试您的异常过滤器,请在控制器的路由处理程序方法中抛出错误并调用该路由。
推荐阅读
- uwamp - 将 PHP v8.0 添加到 UwAmp 3.1.0
- excel - 无法理解为什么会出现错误“编译错误:预期的列表分隔符或 )”
- sql - SSIS 批量插入任务 - 无法手动输入目标表
- firebase - Firebase/Flutter google-services.json 冲突
- laravel - 对普通用户也使用 Backpack 的 Admin CRUD
- firebase - 如何只打开被点击的模态
- gremlin - 如何将选定的属性从一个 gremlin 查询传递到另一个?
- python - python list 在用于循环时表现不同
- fastapi - 如何使用 FastAPI 处理 ImmutableMultiDict
- flutter - 包:get 未安装在 VS Code 上的此应用程序中