处理反腐败层中的例外情况(ACL)

时间:2017-02-17 12:13:07

标签: exception-handling domain-driven-design

在编写与例外有关的反腐败层时,建议采用哪些做法?

公平地说,异常应该被包装/屏蔽,因为系统的任何其他接口方面(也就是有界上下文)都会被集成?

2 个答案:

答案 0 :(得分:4)

反腐败层是为了防止外部系统的习语和行为泄露到您的有界上下文中。因此,将由它产生的异常包装成对BC有意义的异常似乎是个好主意。

执行此操作还会强制您考虑可能在反腐蚀层内发生的错误情况,并使您的应用程序更加健壮。顺便说一句,并非ACL内发生的所有错误都可能/将由直接的第三方系统客户端异常引起。您还必须解决成功但不连贯的结果,以异常(例如意外的HTTP响应状态)等方式发出错误信号,等等。

请注意,包装异常并不意味着将其截断 - 我们需要保留原始错误中的所有信息。围绕例外的所有良好做法仍然有效。

答案 1 :(得分:0)

我没有包含所有这些例外情况。我可以让遗留的异常在堆栈中冒出来。原因是它可能会混乱你的反腐败层。但它有时依赖于因为某些异常可能需要返回错误代码。我将这些例外情况包装到新的有界上下文(反腐败层)。