在服务层中处理Dao异常


问题内容

如果我的Dao层抛出了Dao特定的异常,那么在我的服务层中对它们的处理是否会引起关注的泄漏?如果是,那么我应该使异常通用且独立于任何层来解决它,还是有其他方法吗?

相同的问题适用于服务层引发的UI层处理异常。


问题答案:

当我们创建一个分层的应用程序时,总是有一个用户层和另一个使用过的层。对于这种情况,UI层->使用服务层->使用DAO层。

现在,它非常主观并且易于解释。但目标应该是 良好的去耦程度 。为此,一种解决方法是定义通用 层特定的异常,
例如PersistentExceptionServiceException等等。这些异常将包装实际的层特定的异常。

例如
说,如果在数据库方面有错误(违反约束等),则将其包装在PersistentException中,然后让服务层处理(关于如何以通用方式将其传达给UI层)

现在,由于服务层和DAO层之间的 集成契约式的 (基于接口的),因此DAO层只要遵守 接口契约
,就可以自由地将实现更改为任何内容。因此,如果您更改了引发一些新异常的实现,则可以包装这些新异常,PersistentException并且
Service层不会受到影响