何时在NestJS中使用ExceptionFilter与BaseExceptionFilter



两种类型的过滤器的区别是什么。什么时候使用?请举例说明

@Catch(HttpException)
export class HttpExceptionFilter implements ExceptionFilter {
}
@Catch()
export class AllExceptionsFilter extends BaseExceptionFilter {
}

ExceptionFilter是一个接口,它定义当前类应实现具有签名(exception: unknown, host: ArgumentHost)catch方法。

BaseExceptionFilter是一个已经在NestJS中使用有效的catch方法生成的类。通过使用extend,您可以将自己的逻辑添加到catch中,然后在实现结束时调用super.catch(exception, host),并让Nest负责其余部分。

两者的主要区别在于你想写多少逻辑,而你想添加多少。如果你对Nest已经处理错误的方式感到满意,并且只想添加记录错误的能力,比如对数据库,那么extends BaseExceptionFilter是一个很好的选择。然而,如果你不在乎Nest的异常过滤器默认情况下是如何工作的,那么implements ExceptionFilter和编写自己的自定义逻辑就是你的选择。

最新更新