我想知道這段代碼是否會拋出任何其他異常。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
提交
取消