未调用nestjs异常过滤器

时间:2019-09-06 09:17:07

标签: javascript node.js typescript nestjs

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

我想念什么?

1 个答案:

答案 0 :(得分:0)

在文档中,它指出了将在哪里应用全局异常过滤器:

  对于整个 controller 和每个 route handler ,在整个应用程序中使用

全局范围的过滤器。

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