Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我应该捕获EmptyResultDataAccessException吗?_Java_Spring_Spring Jdbc - Fatal编程技术网

Java 我应该捕获EmptyResultDataAccessException吗?

Java 我应该捕获EmptyResultDataAccessException吗?,java,spring,spring-jdbc,Java,Spring,Spring Jdbc,我有一个SQL语句,我希望它返回一行,因为我正在传递主键。所以我的选择是 在try/catch中包装查询对象,捕获EmptyResultDataAccessException并返回null 将调用更改为queryForList,然后展开列表并(希望)返回第一个元素,或null 我在某个地方读到过这样一篇文章:设置EmptyResultDataAccessException是一种糟糕的做法,因为它扩展了运行时异常 但我看不出有什么问题 我有兴趣听取意见我认为抓住这个例外是完全可以接受的。这是我能回

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

  • 在try/catch中包装查询对象,捕获EmptyResultDataAccessException并返回null
  • 将调用更改为queryForList,然后展开列表并(希望)返回第一个元素,或null
  • 我在某个地方读到过这样一篇文章:设置EmptyResultDataAccessException是一种糟糕的做法,因为它扩展了运行时异常

    但我看不出有什么问题


    我有兴趣听取意见

    我认为抓住这个例外是完全可以接受的。这是我能回忆起的唯一一个Spring异常,但我有有效的用例来尝试查找可能不存在的记录。

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


    这里有一种使用SpringMVC的方法。这样,如果带有主键的对象不存在,您可以向用户发送常规消息

    如果你正在传递一个主键,那么它怎么会返回空的呢。“应该”是这里的关键词。MkYong建议捕获异常并返回空的第二种方法也很好。。没问题