我有一条 SQL 语句,我希望它会返回一行,因为我正在传递主键。所以我的选择是
- 将queryForObject包装在 try/catch 中,捕获 EmptyResultDataAccessException,并返回 null
- 更改对queryForList的调用,然后打开 List 并(希望)返回第一个元素或 null。
我在某处读到了一个 EmptyResultDataAccessException,因为它扩展了运行时异常,这是一种不好的做法。
但我看不出有什么问题。
我有兴趣听取意见
我有一条 SQL 语句,我希望它会返回一行,因为我正在传递主键。所以我的选择是
我在某处读到了一个 EmptyResultDataAccessException,因为它扩展了运行时异常,这是一种不好的做法。
但我看不出有什么问题。
我有兴趣听取意见
我认为捕获该异常是完全可以接受的。这是我记得的唯一一个 Spring 异常,但我有有效的用例来尝试查找可能不存在的记录。
大多数时候我遇到这个(mvc/ws)我让异常被抛出,但在异常解析器中处理异常。返回 null 的问题在于,应用程序依赖于它并且在以后的道路上更远,您必须稍后而不是在预期的时间进行 null 检查。这可能会导致问题,因为并非所有开发人员都可能在需要时进行 null 检查,然后您可能会在稍后遇到 npe。根据您正在编写的应用程序类型,有几种方法可以使用异常解析器捕获和处理异常。通过使用异常解析器,您可以以不同方式处理每个异常并向用户提供反馈。
这是使用spring mvc的一种方法。这样,如果具有主键的对象不存在,您可以向用户发送一般消息。 http://www.mkyong.com/spring-mvc/spring-mvc-exception-handling-example/