【问题标题】:spring hibernate handle value not found找不到弹簧休眠句柄值
【发布时间】:2014-09-02 22:08:47
【问题描述】:

在 spring 和 hibernate 中处理 NullPointerException 的最佳方法是什么?我在 dao 层当前的方法用 try catch 块包围,它看起来安静凌乱而丰富。我读了一些文章,人们建议我应该让 spring 处理异常。这是一个真实的说法吗?因为我不知道如何让 spring 处理它(围绕服务层中的 try catch 块而不是 dao lol)?

【问题讨论】:

    标签: hibernate spring-mvc


    【解决方案1】:

    嗯,这类问题总是有基于意见的答案。尽管有这些做法称为最佳做法。您可能会看到很多不同类型的意见。

    既然你在谈论空指针异常,你会看到更多不同的意见:)

    另一方面,我怎么看?大多数人可能会同意,您只需在 dao 层上抛出异常即可在其他点处理。

    显然,您在这里谈论的是 Web 应用程序。让我们假设它不是空指针异常,而是另一种异常(因为我认为空指针异常应该被不同地考虑)

    1- NullPointerException 以外的异常:

    业务逻辑是在服务层处理的,所以如果数据库上出现异常,比如约束异常,通常是你应该处理这些异常的层,并向相关方提供适当的详细消息(屏幕上的错误消息对于用户,日志文件中的适当信息消息等)。因为业务逻辑和逻辑上应该如何处理异常应该在这里。

    我可以越来越多地从其他角度思考,这是一个与其他主题相关的广泛主题。涉及事务、服务层的角色等。

    2- 空指针异常: 我认为空指针异常不应该出现在经过良好测试的应用程序中。这是因为,如果您要对某些数据(传递的参数、变量等)执行某些逻辑,您应该已经初始化了执行该逻辑所需的所有信息。

    如果没有,您应该只检查一个值是否已初始化,并抛出一个表示数据未初始化的异常(NullPointerException 实际上也是如此。)但是您是否应该始终执行空检查?那是另一个主题,它是关于谁调用您的代码,如果它是以实际上无法使用空值调用的方式编码的代码块(私有方法,某些仅由某些代码使用的后端代码等)

    所以你知道这是一个很长的故事。但是一个好的做法是抛出已检查的异常并让运行时异常在应该处理的地方处理。 (当然不总是)

    【讨论】:

      猜你喜欢
      • 2016-11-04
      • 2020-03-13
      • 1970-01-01
      • 2011-08-09
      • 2012-01-22
      • 2015-12-14
      • 1970-01-01
      • 2012-07-04
      • 2012-05-15
      相关资源
      最近更新 更多