在 Java 中演示 java.lang.IllegalStateException
IllegalStateException
是 Java 語言的 RuntimeException
類的未經檢查的異常部分。IllegalStateException
當被呼叫的方法是非法的或在錯誤的時間被呼叫時丟擲。
此異常由程式設計師或 API 開發人員設定。例如,當使用迭代器時,如果我們在 next()
方法之前呼叫 remove()
方法,它將丟擲 IllegalStateException
。
本教程演示了何時丟擲 IllegalStateException
以便我們可以阻止它。
用 Java 演示 java.lang.IllegalStateException
IllegalStateException
通常在開發人員使用 List、Queue、Tree、Maps、Iterator 和其他 Collections 框架時丟擲。
大多數情況下,列表和佇列是引發 IllegalStateException
的地方。下圖顯示了 IllegalStateException
的結構。
這是一個可以引發 IllegalStateException
的示例。
package delftstack;
import java.util.*;
public class Illegal_State_Exception {
public static void main(String args[]) {
List<String> Demo_List = new ArrayList<String>();
Demo_List.add("Delftstack1");
Demo_List.add("Delftstack2");
Demo_List.add("Delftstack3");
Demo_List.add("Delftstack4");
Demo_List.add("Delftstack5");
Iterator<String> Demo_Iter = Demo_List.iterator();
while (Demo_Iter.hasNext()) {
// System.out.print(Demo_Iter.next()+"\n");
// Calling remove() before next() will throw IllegalStateException
Demo_Iter.remove();
}
}
}
在迭代器的 next()
之前呼叫 remove()
將引發 IllegalStateException
。
見輸出:
Exception in thread "main" java.lang.IllegalStateException
at java.base/java.util.ArrayList$Itr.remove(ArrayList.java:980)
at delftstack.Illegal_State_Exception.main(Illegal_State_Exception.java:18)
為了防止 IllegalStateException
,在 remove()
之前呼叫 next()
。
package delftstack;
import java.util.*;
public class Illegal_State_Exception {
public static void main(String args[]) {
List<String> Demo_List = new ArrayList<String>();
Demo_List.add("Delftstack1");
Demo_List.add("Delftstack2");
Demo_List.add("Delftstack3");
Demo_List.add("Delftstack4");
Demo_List.add("Delftstack5");
Iterator<String> Demo_Iter = Demo_List.iterator();
while (Demo_Iter.hasNext()) {
System.out.print(Demo_Iter.next() + "\n");
// Calling remove() after next() will work fine
Demo_Iter.remove();
}
}
}
上面的程式碼現在可以正常工作了。
Delftstack1
Delftstack2
Delftstack3
Delftstack4
Delftstack5
Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.
LinkedIn Facebook