【问题标题】:unable to catch exception?无法捕捉异常?
【发布时间】:2015-09-22 00:50:40
【问题描述】:

为什么无法捕获 EmptyResultDataAccessException?

方法:

public List<User> findUserById(Object id) {
    MapSqlParameterSource paramSource = new MapSqlParameterSource("userid", String.valueOf(id);

    try {
             List<User> userList = myDatasource.query("select * from User where userid=:userid", paramSource, new UserMapper());
             Logger.info("number or records: " + userList.size();
    catch (EmptyResultDataAccessException e) {
             e.printStackTrace();
    }

  return userList;
}

userList.size();返回 0,但我仍然无法捕获 EmptyResultDataAccessException。我究竟做错了什么 ?

【问题讨论】:

    标签: jdbc spring-jdbc jdbctemplate


    【解决方案1】:

    它不会抛出异常。 EmptyResultDataAccessException 由必须返回单行的 JdbcTemplate#queryForObject 之类的东西引发(因此,未找到行或找到多行的情况除外); Javadoc 中为 queryForObject 列出了异常。由于查询方法(猜测是JdbcTemplate#query)返回一个列表,所以返回一个空列表没有问题,也没有理由抛出异常。

    【讨论】:

    • 这有点糟糕,如果找不到记录,有什么好的异常处理方法可以捕获吗?
    • @Zeus:您可以检查结果集大小并自己抛出异常。如果只想要一行,则使用 queryForObject。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-05
    • 2012-12-14
    • 2012-01-10
    • 1970-01-01
    • 2020-04-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多