NestJS - 如何处理非 api 应用程序中的全局异常

lea*_*ner 6 nestjs

我在 NestJs 中创建了一个示例应用程序,它没有单个控制器。我创建了全局异常过滤器并通过应用程序模块注入它,例如:

providers: [
        {
            provide: APP_FILTER,
            useClass: CustomExceptionFilter,
        },
    ]
Run Code Online (Sandbox Code Playgroud)

当调用任何服务方法并发生异常时,调用不会进入我的自定义异常过滤器。请注意,我的应用程序中没有单个控制器。只有模块和服务。

我还尝试在 main.ts 中注册我的自定义过滤器,但它不起作用:

app.useGlobalFilters(new CustomExceptionFilter());
Run Code Online (Sandbox Code Playgroud)

我想仅使用全局异常过滤器来处理所有类型的异常。任何帮助表示赞赏。

Ral*_*hJS 4

全局方法是可以的,你只需要在类的开头放置一个空的 catch 装饰器,它就会捕获所有错误

@Catch()
export class CustomExceptionsFilter implements ExceptionFilter {
  catch(exception: unknown, host: ArgumentsHost) {
  ...
  }
}

Run Code Online (Sandbox Code Playgroud)