在服务层中处理Dao异常
问题内容:
如果我的Dao层抛出了Dao特定的异常,那么在我的服务层中对它们的处理是否会引起关注的泄漏?如果是,那么我应该使异常通用且独立于任何层来解决它,还是有其他方法吗?
相同的问题适用于服务层引发的UI层处理异常。
问题答案:
当我们创建一个分层的应用程序时,总是有一个用户层和另一个使用过的层。对于这种情况,UI层->使用服务层->使用DAO层。
现在,它非常主观并且易于解释。但目标应该是 良好的去耦程度 。为此,一种解决方法是定义通用 层特定的异常,
例如PersistentException
,ServiceException
等等。这些异常将包装实际的层特定的异常。
例如
说,如果在数据库方面有错误(违反约束等),则将其包装在PersistentException中,然后让服务层处理(关于如何以通用方式将其传达给UI层)
现在,由于服务层和DAO层之间的 集成 是 契约式的 (基于接口的),因此DAO层只要遵守 接口契约
,就可以自由地将实现更改为任何内容。因此,如果您更改了引发一些新异常的实现,则可以包装这些新异常,PersistentException
并且
Service层不会受到影响 。