如果我有一个自定义的runtimeexception从数据访问层抛出 - 是否可以捕获和“处理”它只在上层(所以,忽略它在几个层)?如何处理从数据访问层抛出的自定义runtimeexception
后来编辑:我有一个dao的方法在成千上万的地方使用和树继续和... 一个解决方案,这将影响只是我感兴趣的流是抛出rte和治疗它只在上层。对我没有副作用,但'这是正确的'?
如果我有一个自定义的runtimeexception从数据访问层抛出 - 是否可以捕获和“处理”它只在上层(所以,忽略它在几个层)?如何处理从数据访问层抛出的自定义runtimeexception
后来编辑:我有一个dao的方法在成千上万的地方使用和树继续和... 一个解决方案,这将影响只是我感兴趣的流是抛出rte和治疗它只在上层。对我没有副作用,但'这是正确的'?
这取决于您定义的合同。大多数设计趋向于逐层移动,而不是在层间跳转(跳过层)。它包括具有定义的图层模型:
的这种规则的一个例子可能看起来像可实现(层之间返回的东西但我建议保留禁止跳过层:
这是一个最好/无害的实践问答...... :) – Roxana
是的,没关系。一个很好的规则是:抓住例外时,你可以做一些聪明的事情,否则让它上升。
让我们说层1抛出一个异常。可能发生的情况是,您无法在第2层但在第3层中执行“智能”操作。这取决于您的设计。
这是一个好的或不好的设计的事实是开放的讨论。我的观点是,这是一个'宗教'问题,而不是'技术'问题。
无论您决定如何,我建议您将它记录在javadoc和/或方法声明的“throws”子句中。在你穿过的每一层都做。
我可以通过看
Custom run-time-exception thrown from a data access layer
un-checked-exception
?Checked exception
例如的SQLException。
CheckedExceptions
是为了妥善处理。请分析你与它进行之前忽略的异常的影响。
这个问题的答案应该可以帮助你:http://stackoverflow.com/questions/12923302/good-practices-for-java-exceptions-handling – sebastiencol