【问题标题】:why hibernate changed HibernateException to (unchecked) RuntimeException为什么休眠将 HibernateException 更改为(未选中)RuntimeException
【发布时间】:2011-01-05 22:31:19
【问题描述】:

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

【问题讨论】:

    标签: java hibernate exception


    【解决方案1】:

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

    取自 Java Persistence with Hibernate:

    异常的历史——异常 以及它们应该如何处理 以 Java 之间的激烈争论告终 开发商。这并不奇怪 Hibernate 有一些值得注意的历史 也是。在 Hibernate 3.x 之前,所有 Hibernate 抛出的异常是 检查异常,所以每个 Hibernate API 迫使开发人员捕捉并 处理异常。这个策略是 受 JDBC 影响,它也抛出 只检查异常。然而,它 很快就清楚这并不 有道理,因为所有的例外 Hibernate 抛出的都是致命的。在许多 情况下,开发人员可以做的最好的事情 这种情况要清理,显示 一条错误消息,然后退出 应用。因此,从 Hibernate 3.x,抛出所有异常 Hibernate 是 未经检查的运行时异常,即 通常在一个位置处理 在一个应用程序中。这也使得任何 Hibernate 模板或包装 API 过时了。

    【讨论】:

    • @T.J.是的,如果能放在这里就好了。我知道我在某个地方读到过这篇文章,所以如果我找到了那个来源,我会在这里发布。
    • Hibernate 员工做出的许多愚蠢决定之一。如果在线程内抛出 RuntimeExceptions 是不可见的:它只会杀死线程而没有任何痕迹。库中禁止运行时异常,这是非常糟糕的设计。
    • 同意。我现在必须更改 DAO 层中的所有经典尝试捕获,天知道 RuntimeException 在哪里。低能儿。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-09
    • 1970-01-01
    • 2017-06-23
    • 1970-01-01
    • 1970-01-01
    • 2017-12-28
    • 2014-11-20
    相关资源
    最近更新 更多