我想知道这段代码是否会抛出任何其他异常。public class asd{static private List<Integer> list = new ArrayList<>();public static main(String[]args){list.add(0);list.add(1);list.add(3);for(Integer integer: list) { if(integer% 2 == 0) { list.remove(integer); } } }}我知道 ConcurrentModificationException。我只是想知道这段代码是否能够做更多的混乱。非常感谢
3 回答
慕尼黑8549860
TA贡献1818条经验 获得超11个赞
您编写的代码完全是确定性的:无论您在何处运行它,它都会做同样的事情。因此,它会抛出哪些异常?嗯,运行它。这就是它会抛出的东西,它不会抛出任何其他东西。正如其他人所说,这段代码特别会 throw ConcurrentModificationException
,因为如果你想内联删除,你需要使用 iterators方法(如果你使用样式,你remove()
不能访问该方法,你必须使用反而。for( a : b)
Iterator<T> it = list.iterator(); while (it.next()) { .. }
如果您想深入了解 Java 应用程序中可能发生的异常,那么您可以就该主题写一整本书。我想只是命名一些随机想到的东西,看看那个代码:
如果列表被堆损坏,则无声强制转换为整数将抛出ClassCastException
. 如果列表中有空值,自动拆箱会抛出NullPointerException
. 如果您忘记初始化列表,则会抛出一个NullPointerException
,或者编译器将失败并显示错误“列表未初始化”,具体取决于您编写代码的方式。
添加回答
举报
0/150
提交
取消