什么时候会在Java中引发IllegalStateException(未经检查)?

一个IllegalStateException异常 未经检查 的异常 在Java中。如果我们正在处理java.util.package的收集框架,则该异常可能在我们的Java程序中出现。有许多类似List,Queue,Tree,  Map的 集合,其中的List Queues (Queue和Deque)不在特定条件下抛出此IllegalStateException 

何时将抛出IllegalStateException

  • 一个IllegalStateExceptionexception 会被抛出,当我们试图在不适当的时间来调用特定的方法。

  • 对于 java.util.List集合,我们使用List Iterator 接口的next()方法遍历java.util.List。如果我们在调用next() 方法之前调用ListIterator 接口的remove()方法,则将引发此异常,因为它将使List 集合处于不稳定 状态

  • 如果要修改一个特定的对象,我们将使用ListIterator 接口的set() 方法。

  • 对于队列,如果我们尝试将元素添加到Queue,则必须确保队列未满。如果此队列已满,则我们无法添加该元素,这将导致引发IllegalStateExceptionException 

示例

import java.util.*;
public class IllegalStateExceptionTest {
   public static void main(String args[]) {
      List list = new LinkedList();
      list.add("Welcome");
      list.add("to");
      list.add("Tutorials");
      list.add("Point");
      ListIterator lIterator = list.listIterator();
      lIterator.next();
      lIterator.remove();// modifying the list
      lIterator.set("Tutorix");
      System.out.println(list);
   }
}

输出结果

Exception in thread "main" java.lang.IllegalStateException        at java.util.LinkedList$ListItr.set(LinkedList.java:937)
        at IllegalStateExceptionTest.main(IllegalStateExceptionTest.java:15)