NestJS:如何将错误从一个错误过滤器传递到另一个错误过滤器?
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
}
}
有没有办法让第一个Filter在第一个之后捕获错误?谢谢!
回答如下:如果多个过滤器与错误匹配,则将运行具有最高优先级的过滤器。 ExceptionFilter
的优先级有两个因素:
全球与本地
绑定到控制器或其某个方法的过滤器始终具有比全局过滤器更高的优先级。
控制器:
// 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
最新文章
- php开发API接口的代码案例
- 老鼠出迷宫问题(Java)(递归)
- 清理Dump文件
- Window Server 2008虚拟机安装
- DEV GridView 部分属性
- 软件复用的优点,举例描述支持软件复用的方法和内容。
- MSYS安装
- 数字化音频
- Azure App object和Service Principal
- [SOA介绍]什么是SOA
- screen工具使用
- JMeter BeanShell 应用
- 针对ONION勒索病毒!如何关闭139端口及445端口等危险端口
- TCP的基本概念
- WindowsForm 入门
- SimpleDateFormat的坑
- atoi和itoa(头文件stdilb.h)的C实现
- [转载]interp1
- 数据挖掘——机器学习
- 统计学、深度学习、机器学习、数据挖掘