Java 数据库层异常处理的设计模式
我的系统有两个主要层,服务层和数据库访问层 我为数据库操作向服务层公开了一个接口 现在,在这个接口中,DAO层的每个操作都会引发一些异常,例如超时异常等- 除了使用Java 数据库层异常处理的设计模式,java,spring-data,Java,Spring Data,我的系统有两个主要层,服务层和数据库访问层 我为数据库操作向服务层公开了一个接口 现在,在这个接口中,DAO层的每个操作都会引发一些异常,例如超时异常等- 除了使用throws ExceptionName显式指定每个方法外,是否有其他方法来表示此规范 除了使用throws ExceptionName显式指定每个方法外,还有其他方法来表示此规范吗 没有。对不起 通过(重新)将自定义异常实现为一个层次结构,可以潜在地减少样板文件的数量。但是,除非您希望不勾选例外1,否则需要一些样板文件 1-这也有
throws ExceptionName
显式指定每个方法外,是否有其他方法来表示此规范
除了使用throws ExceptionName显式指定每个方法外,还有其他方法来表示此规范吗
没有。对不起
通过(重新)将自定义异常实现为一个层次结构,可以潜在地减少样板文件的数量。但是,除非您希望不勾选例外1,否则需要一些样板文件
1-这也有缺点。如果不选中,则会丢失未处理异常的编译时检查。这里有多个选项;但我认为我的“观点”与你现在在许多地方会发现的“最佳实践”不谋而合:
- 如果您想使用选中的异常,那么创建一些抽象的基本异常并将其放在抛出列表中。因为您确实不希望在抛出列表中出现一个或两个以上的异常。这仅仅是因为如此广泛的抛出列表会随着时间的推移而增长,并且它们会迅速污染你的所有层李>
- 您还可以选择不使用选中的异常!相反:抛出适当的运行时异常,并在接口上通过javadoc记录该事实。许多人认为,已检查异常和未检查异常之间的“战争”已经结束,并且未检查异常获胜。因为你需要一些“通用的一切捕捉”的东西在上面。那么,不管怎样,当代码被编写出来的时候,为什么会有那些维护密集型的抛出列表呢李>