最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

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

IT培训 admin 6浏览 0评论

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           

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           
发布评论

评论列表 (0)

  1. 暂无评论