为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 NestJs 服务中组织抛出业务逻辑异常?

如何在 NestJs 服务中组织抛出业务逻辑异常?

慕沐林林 2021-09-17 16:25:15
我对这个github问题讨论有一些疑问:https : //github.com/nestjs/nest/issues/310我想按照shekohex建议从我的服务方法中抛出业务域异常。我想知道我应该把它们放在哪里?我相信它们中的许多跨域(例如EntityNotFoundException,ActionForbiddenException等)将非常相似,因此将它们保留在应用程序级别(某种共享模块)是有意义的。另一方面,这会使特定域的独立性降低(例如,如果我需要在将来某个时候将其中的很少一部分提取到另一个应用程序中怎么办?)。更重要的是,一些例外可能是特定于域的,我必须将它们保留在适当的域模块结构中。假设我确实将其中一些保留在共享模块中,而将其余部分保留在各个域目录中。我如何将它们映射到正确的HttpExceptions?如果我进行全局异常过滤,我也会使我的域控制器更加依赖于应用层。如何映射特定于域的异常?我是否创建另一个模块级异常过滤器?创建全局或模块级过滤器是一种方法吗?装饰每个端点UseFilters似乎很麻烦。预先感谢您的意见!
查看完整描述

2 回答

?
万千封印

TA贡献1891条经验 获得超3个赞

好的,让我们专注于将异常保留在共享文件夹中,从那里我们得到了您通过为 HttpExceptions 创建全局异常过滤器所说的方法,这不是一种糟糕的方法,您可以在异常本身中格式化输出。其他方法可能是创建一个 BusinessDomainFilter 并仅捕获与域相关的异常:


@Catch(EntityNotFoundException, ActionForbiddenException)

@Injectable()

export class BusinessDomainFilter implements ExceptionFilter {

...

并只映射那些例外,将其余的留给应用程序过滤器


查看完整回答
反对 回复 2021-09-17
  • 2 回答
  • 0 关注
  • 402 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号