我正在尝试在NestJS应用中使用异常过滤器。我按照发现的here的说明设置了全局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());
在main.ts
中,这也不起作用。
我想念什么?
答案 0 :(得分:0)
在文档中,它指出了将在哪里应用全局异常过滤器:
对于整个 controller 和每个 route handler ,在整个应用程序中使用全局范围的过滤器。
它们不用于应用程序启动。因此,如果要测试异常过滤器,请在控制器的路由处理程序方法中引发错误并调用路由。