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