没有找到spring hibernate句柄值

时间:2014-09-02 22:08:48

标签: hibernate spring-mvc

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

1 个答案:

答案 0 :(得分:0)

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

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

另一方面,我怎么想?大多数人可能会同意你需要在dao层上抛出异常,以便在其他方面处理句柄。

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

1- NullPointerException以外的例外:

业务逻辑在服务层上处理,因此如果在数据库上存在异常,例如约束异常,则通常是应该处理这些异常的层,并向感兴趣的各方提供适当的详细消息(屏幕上的错误消息)对于用户,日志文件中的适当信息性消息等)。因为业务逻辑以及应该如何逻辑地处理异常应该在这里。

我可以继续思考其他观点,这是一个与其他主题相关的广泛主题。涉及交易,服务层角色等。

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

如果没有,你应该只检查一个值是否被初始化并抛出一个表示数据未被初始化的异常(NullPointerException实际上也是这样。)但是你应该总是执行空检查吗?这是另一个主题,它是关于谁调用你的代码,如果它是以一种实际上不能用空值调用的方式编码的代码块(私有方法,某些代码仅使用的某些后端代码等)。 / p>

所以你看,这是一个很长的故事。但是一个好的做法就是抛出已检查的异常,并将运行时异常处理到应该处理的位置。 (当然不总是)