无法捕捉异常?

时间:2015-09-22 00:50:40

标签: jdbc spring-jdbc jdbctemplate

为什么不能捕获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。我究竟做错了什么 ?

1 个答案:

答案 0 :(得分:1)

它没有抛出异常。像JdbcTemplate#queryForObject这样的东西抛出EmptyResultDataAccessException,它们必须返回一行(因此异常是针对没有找到行的情况,或者找到多行的情况);在Javadoc中列出了queryForObject的异常。由于查询方法(猜测这是JdbcTemplate#query)返回一个列表,返回空列表没有问题,没有理由抛出异常。