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