为了账号安全,请及时绑定邮箱和手机立即绑定

此代码能否抛出除 ConcurrentModificationException 之外的任何其他

此代码能否抛出除 ConcurrentModificationException 之外的任何其他

翻阅古今 2022-10-07 17:04:45
我想知道这段代码是否会抛出任何其他异常。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 回答

?
犯罪嫌疑人X

TA贡献2080条经验 获得超4个赞

此特定代码不会引发异常,因为列表为空。NullPointerException但如果列表中有null值,则可以有s。(拆箱:https ://docs.oracle.com/javase/tutorial/java/data/autoboxing.html )



查看完整回答
反对 回复 2022-10-07
?
蝴蝶不菲

TA贡献1810条经验 获得超4个赞

不,此外,由于 中没有元素,因此不会执行循环list,但如果有的话,只会ConcurrentModificationException抛出 。



查看完整回答
反对 回复 2022-10-07
?
慕尼黑8549860

TA贡献1818条经验 获得超11个赞

您编写的代码完全是确定性的:无论您在何处运行它,它都会做同样的事情。因此,它会抛出哪些异常?嗯,运行它。这就是它会抛出的东西,它不会抛出任何其他东西。正如其他人所说,这段代码特别会 throw ConcurrentModificationException,因为如果你想内联删除,你需要使用 iterators方法(如果你使用样式,你remove()不能访问该方法,你必须使用反而。for( a : b)Iterator<T> it = list.iterator(); while (it.next()) { .. }

如果您想深入了解 Java 应用程序中可能发生的异常,那么您可以就该主题写一整本书。我想只是命名一些随机想到的东西,看看那个代码:

如果列表被堆损坏,则无声强制转换为整数将抛出ClassCastException. 如果列表中有空值,自动拆箱会抛出NullPointerException. 如果您忘记初始化列表,则会抛出一个NullPointerException,或者编译器将失败并显示错误“列表未初始化”,具体取决于您编写代码的方式。


查看完整回答
反对 回复 2022-10-07
  • 3 回答
  • 0 关注
  • 75 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信