8

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

  1. queryForObject包装在 try/catch 中,捕获 EmptyResultDataAccessException,并返回 null
  2. 更改对queryForList的调用,然后打开 List 并(希望)返回第一个元素或 null。

我在某处读到了一个 EmptyResultDataAccessException,因为它扩展了运行时异常,这是一种不好的做法。

但我看不出有什么问题。

我有兴趣听取意见

4

2 回答 2

3

我认为捕获该异常是完全可以接受的。这是我记得的唯一一个 Spring 异常,但我有有效的用例来尝试查找可能不存在的记录。

于 2013-05-06T20:57:24.213 回答
1

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

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

于 2013-05-06T21:15:48.133 回答