我应该抓住EmptyResultDataAccessException吗?

时间:2013-05-06 20:03:48

标签: java spring spring-jdbc

我有一个SQL语句,我希望它会返回一行,因为我传递的是主键。所以我的选择是

  1. 在try / catch中包装 queryForObject ,捕获EmptyResultDataAccessException,并返回null
  2. 将调用更改为 queryForList ,然后打开List并(希望)返回第1个元素,或者为null。
  3. 我在某处读到了一个EmptyResultDataAccessException,因为它扩展了运行时异常,这是一种不好的做法。

    但我看不出它有什么问题。

    我有兴趣听取意见

2 个答案:

答案 0 :(得分:2)

我认为抓住这个例外是完全可以接受的。这是我记得的唯一一个我能记得的Spring异常,但我有一些有效的用例试图找到一个可能不存在的记录。

答案 1 :(得分:1)

大多数时候我遇到过这个问题(mvc / ws)我会抛出异常,但是在异常解析器中处理异常。返回null的问题在于应用程序依赖于它并且在未来的路上,您将不得不在以后进行空检查而不是在预期存在时进行空检查。这可能会导致问题,因为并非所有开发人员都可能在需要时进行空检查,然后您可能会遇到npe。根据您编写的应用程序类型,有几种方法可以使用异常解析程序捕获和处理异常。通过使用异常解析程序,您可以以不同方式处理每个异常并向用户提供反馈。

这是使用spring mvc执行此操作的一种方法。这样,如果具有主键的对象不存在,您可以向用户发送一般消息。 http://www.mkyong.com/spring-mvc/spring-mvc-exception-handling-example/