为什么不能捕获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。我究竟做错了什么 ?
答案 0 :(得分:1)
它没有抛出异常。像JdbcTemplate#queryForObject这样的东西抛出EmptyResultDataAccessException,它们必须返回一行(因此异常是针对没有找到行的情况,或者找到多行的情况);在Javadoc中列出了queryForObject的异常。由于查询方法(猜测这是JdbcTemplate#query)返回一个列表,返回空列表没有问题,没有理由抛出异常。