在DAO层或Delegate层中处理异常的位置?

时间:2015-06-19 07:52:41

标签: java design-patterns

为了更好地设计应用程序:

  1. 在DAO图层或代理图层中处理异常的位置?
  2. 哪一个更好地接近1中给出的2?

1 个答案:

答案 0 :(得分:2)

与“设计”问题一样:这取决于。

一般来说,我会说在本地处理尽可能多的例外情况,在这种情况下是在DAO中,但你可能想重新抛出一些例外或直接引发新例外。

E.g。如果您的DAO导致SQLException,您不希望让您的上层甚至知道使用了SQL,因此建议尽早捕获此异常(因此您不必在Delegate Layer的包中导入SQLException)。但是,在MyCustomDAOException中重新抛出SQLException将允许保留错误信息。

tldr;在DAO中,如果需要,抛出包含原始异常的新异常。