在 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