猿问

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

我想知道这段代码是否会抛出任何其他异常。


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。我只是想知道这段代码是否能够做更多的混乱。非常感谢


翻阅古今
浏览 91回答 3
3回答

犯罪嫌疑人X

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

蝴蝶不菲

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

慕尼黑8549860

您编写的代码完全是确定性的:无论您在何处运行它,它都会做同样的事情。因此,它会抛出哪些异常?嗯,运行它。这就是它会抛出的东西,它不会抛出任何其他东西。正如其他人所说,这段代码特别会 throw&nbsp;ConcurrentModificationException,因为如果你想内联删除,你需要使用 iterators方法(如果你使用样式,你remove()不能访问该方法,你必须使用反而。for( a : b)Iterator<T> it = list.iterator(); while (it.next()) { .. }如果您想深入了解 Java 应用程序中可能发生的异常,那么您可以就该主题写一整本书。我想只是命名一些随机想到的东西,看看那个代码:如果列表被堆损坏,则无声强制转换为整数将抛出ClassCastException.&nbsp;如果列表中有空值,自动拆箱会抛出NullPointerException.&nbsp;如果您忘记初始化列表,则会抛出一个NullPointerException,或者编译器将失败并显示错误“列表未初始化”,具体取决于您编写代码的方式。
随时随地看视频慕课网APP

相关分类

Java
我要回答