2013-07-30 85 views
0

如果我有一个自定义的runtimeexception从数据访问层抛出 - 是否可以捕获和“处理”它只在上层(所以,忽略它在几个层)?如何处理从数据访问层抛出的自定义runtimeexception

后来编辑:我有一个dao的方法在成千上万的地方使用和树继续和... 一个解决方案,这将影响只是我感兴趣的流是抛出rte和治疗它只在上层。对我没有副作用,但'这是正确的'?

+1

这个问题的答案应该可以帮助你:http://stackoverflow.com/questions/12923302/good-practices-for-java-exceptions-handling – sebastiencol

回答

0

这取决于您定义的合同。大多数设计趋向于逐层移动,而不是在层间跳转(跳过层)。它包括具有定义的图层模型:

  • 图层和它们包含的逻辑类型。
    • 类型的功能或责任。
  • 图层的层次级别。
  • 图层之间的通信规则。
  • 质量目标导致这种分层模型
    • 以及它们如何与这些层和规则

的这种规则的一个例子可能看起来像可实现(层之间返回的东西但我建议保留禁止跳过层:

​​

+0

这是一个最好/无害的实践问答...... :) – Roxana

1

是的,没关系。一个很好的规则是:抓住例外时,你可以做一些聪明的事情,否则让它上升

让我们说层1抛出一个异常。可能发生的情况是,您无法在第2层但在第3层中执行“智能”操作。这取决于您的设计。

这是一个好的或不好的设计的事实是开放的讨论。我的观点是,这是一个'宗教'问题,而不是'技术'问题。

无论您决定如何,我建议您将它记录在javadoc和/或方法声明的“throws”子句中。在你穿过的每一层都做。

1

我可以通过看

Custom run-time-exception thrown from a data access layer

  • 给予一定的指点由于它是从数据访问层来了,这是非常重要的,了解什么是根源。
  • 由于它是运行时异常,我们可以安全地假设它的根本原因始终是un-checked-exception
  • 如果是,那么你可以考虑在登录后跳过它。
  • 如果否,则根情况可以是任何Checked exception例如的SQLException。
    • 我们知道CheckedExceptions是为了妥善处理。
    • 此外,您需要检查数据访问层开发人员,为什么选中的异常未经检查,然后抛出。

请分析你与它进行之前忽略的异常的影响。

相关问题