【问题标题】:Should I Catch EmptyResultDataAccessException?我应该捕获 EmptyResultDataAccessException 吗?
【发布时间】:2013-04-30 15:46:28
【问题描述】:

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

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

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

但我看不出有什么问题。

我有兴趣听取意见

【问题讨论】:

  • 如果你传递一个主键,那它怎么会返回空呢?
  • 嗯,它不是,它不应该这样做。 “应该”是这里的关键词。
  • MkYong 建议捕获异常并返回 null mkyong.com/spring/…
  • 第二种方法也很好..没有错

标签: java spring spring-jdbc


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2011-05-17
      • 1970-01-01
      • 2017-07-31
      • 2010-09-10
      • 1970-01-01
      • 1970-01-01
      • 2018-11-19
      • 1970-01-01
      相关资源
      最近更新 更多