kar*_*ine 3 javascript node.js typescript nestjs
我正在为我的应用程序使用 NestJS 并捕获过滤器中的所有错误。我有一些逻辑,我希望每个特定的错误都被格式化,然后被发送到最终的ExceptionFilter. 我有以下代码:
@Catch()
export class GlobalErrorFilter implements ExceptionFilter {
public catch(error: HttpException, host: ArgumentsHost) {
// do something
}
}
Run Code Online (Sandbox Code Playgroud)
还有这个:
@Catch(NotFoundException)
export class NotfoundFilter implements ExceptionFilter<NotFoundException> {
public catch(error: NotFoundException, host: ArgumentsHost) {
// do something here
}
}
Run Code Online (Sandbox Code Playgroud)
有没有办法让第一个过滤器在第一个过滤器之后捕获错误?谢谢!
Kim*_*ern 11
如果多个过滤器与错误匹配,则将运行具有最高优先级的过滤器。a 的优先级有两个因素ExceptionFilter:
绑定到控制器或其方法之一的过滤器始终比全局过滤器具有更高的优先级。
控制器:
// First NotfoundFilter is checked
@UseFilters(NotfoundFilter)
Run Code Online (Sandbox Code Playgroud)
全球的:
// Then GlobalErrorFilter is checked
app.useGlobalFilters(new GlobalErrorFilter());
Run Code Online (Sandbox Code Playgroud)
最后注册的过滤器将具有最高优先级。所以最具体的过滤器应该最后注册:
@UseFilters(GlobalErrorFilter, NotfoundFilter)
// ^^^ 2nd ^^^ 1st
Run Code Online (Sandbox Code Playgroud)
或者
app.useGlobalFilters(new GlobalErrorFilter(), new NotfoundFilter());
// ^^^ 2nd ^^^ 1st
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1729 次 |
| 最近记录: |