Java 数据库层异常处理的设计模式

Java 数据库层异常处理的设计模式,java,spring-data,Java,Spring Data,我的系统有两个主要层,服务层和数据库访问层 我为数据库操作向服务层公开了一个接口 现在,在这个接口中,DAO层的每个操作都会引发一些异常,例如超时异常等- 除了使用throws ExceptionName显式指定每个方法外,是否有其他方法来表示此规范 除了使用throws ExceptionName显式指定每个方法外,还有其他方法来表示此规范吗 没有。对不起 通过(重新)将自定义异常实现为一个层次结构,可以潜在地减少样板文件的数量。但是,除非您希望不勾选例外1,否则需要一些样板文件 1-这也有

我的系统有两个主要层,服务层和数据库访问层

我为数据库操作向服务层公开了一个接口

现在,在这个接口中,DAO层的每个操作都会引发一些异常,例如超时异常等-

除了使用
throws ExceptionName
显式指定每个方法外,是否有其他方法来表示此规范

除了使用throws ExceptionName显式指定每个方法外,还有其他方法来表示此规范吗

没有。对不起

通过(重新)将自定义异常实现为一个层次结构,可以潜在地减少样板文件的数量。但是,除非您希望不勾选例外1,否则需要一些样板文件



1-这也有缺点。如果不选中,则会丢失未处理异常的编译时检查。

这里有多个选项;但我认为我的“观点”与你现在在许多地方会发现的“最佳实践”不谋而合:

  • 如果您想使用选中的异常,那么创建一些抽象的基本异常并将其放在抛出列表中。因为您确实不希望在抛出列表中出现一个或两个以上的异常。这仅仅是因为如此广泛的抛出列表会随着时间的推移而增长,并且它们会迅速污染你的所有层
  • 您还可以选择不使用选中的异常!相反:抛出适当的运行时异常,并在接口上通过javadoc记录该事实。许多人认为,已检查异常和未检查异常之间的“战争”已经结束,并且未检查异常获胜。因为你需要一些“通用的一切捕捉”的东西在上面。那么,不管怎样,当代码被编写出来的时候,为什么会有那些维护密集型的抛出列表呢
很酷。但我想我会尝试检查的继承人例外。谢谢你的快速接受!