测试线上项目时,不经意发现了这个异常信息。本着程序员该有的精神,跟了一遍代码。
找到了问题的所在。
官方对此异常的解释是:当方法检测到对象的并发修改,但不允许这种修改时,抛出此异常。
系统中代码大意如下:
for (Iterator iter = list.iterator(); iter.hasNext();) {
Object o = (Object) iter.next();
list.remove(o);
}
问题就在这个remove上。
程序正在遍历这个list,但是在遍历时缺试图修改这个list,所以抛出此异常。那么在遍历list的时候,想要删除其中的元素应该怎么办呢。
list delList = new ArrayList();
for (Iterator iter = list.iterator(); iter.hasNext();) {
Object o = (Object) iter.next();
delList.add(o);
}
list.removeAll(delList);