如果我有一个分层应用程序而我的数据层可能遇到 OptimisticConcurrencyException ,那么调用层或者下层应该如何处理这个?
调用层不知道 OptimisticConcurrencyException 是什么,所以我应该实现自定义异常并捕获 OptimisticConcurrencyException 并抛出自定义异常吗?
对此的一些指导将不胜感激。
答案 0 :(得分:7)
OptimisticConcurrencyException
是属于数据层的异常,因此应包含在其中。调用层不太可能处理它。
我会创建一个更通用的异常,例如DataSourceException
,其中包含一些上下文,例如哪个函数失败(以及哪些参数)以及原因。我还将原始异常作为内部异常包括在内。
阅读关于捕获例外的博客文章:http://blog.gauffin.org/2010/11/do-not-catch-that-exception/
我还写了一些关于异常处理的其他条目,点击异常标记。
<强>更新强>
我会创建以下项目:
答案 1 :(得分:4)
您需要从调用层的角度来看这个。该层已请求数据层执行作业。如果您的数据层可以处理OptimisticConcurrencyException
并且遵守合同,那么一定要抓住它然后继续并完成工作。
但是,如果这对你要求做的工作是致命的,并且如果调用者不期望它,或者不知道它,那么你可以创建自己的异常类,catch与调用层不同的异常,而是抛出它。这是调用层可以知道的内容,并且可以很好地记录为使用此函数/ API的副作用。