我在尝试更新某些信息时遇到错误。错误如下:
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.RangeCheck(Unknown Source)
at java.util.ArrayList.get(Unknown Source)
at com.app.dao.RolesDAO.getUserRoleByUserID(RolesDAO.java:42)
at com.app.business.UserRolesBusiness.updateInformation(UserRolesBusiness.java:21)
at com.app.business.UserRolesBusiness.main(UserRolesBusiness.java:29)
调试后,我看到业务层工作正常,可以检索用户ID。但它以后未能更新信息。我的代码实现如下:
业务层实施:
public void updateInformation(String userName, String roleName) {
Users user = dao1.getUserInfo(userName);
String userIDString = Integer.toString(...);
Roles updateRole = dao2.getUserRoleByUserID(userIDString);
updateRole.setRole(roleName);
r.updateRole(updateRole);
}
DAO层实施:
getUserInfo方法:
.....
user = ... query.list().get(0);
....
getUserRoleByUserID方法:
....
role = ... query.list().get(0);
....
抛出异常的原因是什么" IndexOutOfBoundsException"以及如何解决问题。它成功执行了第一个查询,但没有执行第二个查询。有什么建议吗?
答案 0 :(得分:2)
您正在调用query.list().get(0)
两次,而不检查列表的大小。如果其中一个为空,则结果将为IndexOutOfBoundsException
。在尝试获取第一个列表元素之前,请调用isEmpty()
方法或验证size()
是否大于零。