【发布时间】:2012-05-20 11:07:07
【问题描述】:
我可以直接在服务层使用spring DataAccessException吗?这是在服务层中传播框架工作类的良好实践/设计吗?
或
我应该在 dao 层捕获 DataAccessException 并将其重新抛出为更通用的异常吗?
【问题讨论】:
标签: spring dao service-layer
我可以直接在服务层使用spring DataAccessException吗?这是在服务层中传播框架工作类的良好实践/设计吗?
或
我应该在 dao 层捕获 DataAccessException 并将其重新抛出为更通用的异常吗?
【问题讨论】:
标签: spring dao service-layer
我认为 DAO 层可以抛出该异常。服务层已经知道持久层,因此不会创建额外的依赖关系。
【讨论】:
最好将 DataAccessException(从 DAO 层抛出)映射/包装到特定于应用程序的异常层次结构(在服务层中),以便依赖/调用层只需处理您的应用程序特定异常类。
【讨论】:
就个人而言,我在服务层捕获所有已检查的异常并抛出我自己的 ServiceExceptions,用捕获的异常来初始化它们。这样异常信息不会丢失,Controllers也不需要处理低级异常。但是在 DAO 层没有必要这样做。
在“Effective Java”(J. Bloch)中有一个非常好的关于异常处理的章节,它和本书的其余部分一样值得一读。第 61 条处理这个问题。
http://books.google.de/books/about/Effective_Java.html?id=Ft8t0S4VjmwC
【讨论】: