一尘不染

为什么hibernate将HibernateException更改为(未选中)RuntimeException

hibernate

我知道在某些版本中,Hibernate异常已更改为未经检查。是什么原因?这是哲学问题还是实际问题?


阅读 256

收藏
2020-06-20

共1个答案

一尘不染

实际的。因此,您不必将有关Hibernate的每一项操作都包装在try catch块中。

摘自Hibernate的Java Persistence:

异常的历史-异常及其应如何处理始终以Java开发人员之间的激烈辩论而告终。hibernate也具有一些值得注意的历史也就不足为奇了。在Hibernate
3.x之前,Hibernate抛出的所有异常都是经过检查的异常,因此每个Hibernate
API都强制开发人员捕获并处理异常。该策略受JDBC的影响,JDBC也仅引发检查的异常。但是,很快就知道这是没有意义的,因为Hibernate抛出的所有异常都是致命的。在许多情况下,开发人员在这种情况下最好的选择就是清理,显示错误消息并退出应用程序。因此,从Hibernate
3.x开始,Hibernate抛出的所有异常都是未经检查的Runtime
Exception的子类型,通常在应用程序中的单个位置进行处理。这也会使任何Hibernate模板或包装器API过时。

2020-06-20