javascript - NestJS:如何将错误从一个错误过滤器传递到另一个错误过滤器?

标签 javascript node.js typescript nestjs

我正在为我的应用程序使用 NestJS,并在过滤器中捕获所有错误。 我有一些逻辑,我希望对每个特定错误进行格式化,然后发送到最终的 ExceptionFilter .我有以下代码:

@Catch()
    export class GlobalErrorFilter implements ExceptionFilter {
 public catch(error: HttpException, host: ArgumentsHost) {
// do something
}
    }

还有这个:

@Catch(NotFoundException)
export class NotfoundFilter implements ExceptionFilter<NotFoundException> {
    public catch(error: NotFoundException, host: ArgumentsHost) {
        // do something here
    }
}

有没有办法让第一个过滤器在第一个过滤器之后捕获错误?谢谢!

最佳答案

如果多个过滤器匹配到一个错误,则优先级最高的过滤器将运行。 ExceptionFilter 的优先级有两个因素:

全局与本地

绑定(bind)到 Controller 或其方法之一的过滤器总是比全局过滤器具有更高的优先级。

Controller :

// First NotfoundFilter is checked
@UseFilters(NotfoundFilter)

全局:

// Then GlobalErrorFilter is checked
app.useGlobalFilters(new GlobalErrorFilter());

注册顺序

最后注册的过滤器将具有最高的优先级。所以最具体的过滤器应该最后注册:

@UseFilters(GlobalErrorFilter, NotfoundFilter)
//          ^^^ 2nd            ^^^ 1st

app.useGlobalFilters(new GlobalErrorFilter(), new NotfoundFilter());
//                       ^^^ 2nd                  ^^^ 1st           

关于javascript - NestJS:如何将错误从一个错误过滤器传递到另一个错误过滤器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54727103/

相关文章:

node.js - 使用规则引擎和 Node.js 来处理权限的设计模式

javascript - 在 Node 中异步而不使用 async 模块,有更好的方法吗?

javascript - 对象文字属性值简写与 `this` 不兼容

javascript - 广播到房间的套接字 IO 无法正常工作

typescript - 如何在 typescript + react native 中为主题功能组件正确设置/使用 ref

typescript - Chalk 在 Deno 中无法运行

typescript - 在 TypeScript 的默认无名类中访问静态属性

JavaScript 函数顺序 : why does it matter?

javascript - React Native React 对象中的子数组

javascript - React - 在渲染期间更新状态会产生错误