【发布时间】:2014-10-14 17:55:51
【问题描述】:
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("Value1");
list.add("Value2");
list.add("Value3");
for(String val: list ) {
list.remove(0);
System.out.println(list);
}
}
o\p: [值 2,值 3] 线程“主”java.util.ConcurrentModificationException 中的异常
这里我试图同时读取和删除第 0 个元素。 所以它应该给出一个异常。但是我的qn是为什么它在异常之后执行println语句。它发现异常的那一刻应该退出循环。
【问题讨论】:
-
您有线程转储,它应该显示堆栈跟踪并为您提供引发异常的确切行号。通过 FOR 语句第二次尝试从列表中获取下一个值时,检查是否没有引发异常。 remove 操作对迭代器一无所知,但迭代器可以知道列表中的某些内容发生了变化。
标签: java