【问题标题】:nestjs exception filter is not invoked未调用nestjs异常过滤器
【发布时间】:2019-09-06 09:17:07
【问题描述】:

我正在尝试在我的 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,这也不起作用。

我错过了什么?

【问题讨论】:

  • 你在哪里抛出异常?
  • 在服务构造函数中。

标签: javascript node.js typescript nestjs


【解决方案1】:

在文档中,它说明了将在何处应用全局异常过滤器:

全局范围的过滤器用于整个应用程序,用于每个控制器和每个路由处理程序

它们不用于应用程序启动。因此,如果您想测试您的异常过滤器,请在控制器的路由处理程序方法中抛出错误并调用该路由。

【讨论】:

    猜你喜欢
    • 2021-11-05
    • 2020-08-30
    • 2018-11-22
    • 2020-08-23
    • 1970-01-01
    • 2015-09-30
    • 2021-10-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多