Computer >> Máy Tính >  >> Lập trình >> Java

Khi nào thì một IllegalStateException (không được chọn) được ném vào Java?

IllegalStateException không được kiểm tra ngoại lệ trong Java. Ngoại lệ này có thể phát sinh trong chương trình java của chúng tôi chủ yếu nếu chúng tôi đang xử lý khung thu thập của java.util.package . Có nhiều bộ sưu tập như Danh sách, Hàng đợi, Cây, Bản đồ ra khỏi Danh sách Hàng đợi (Queue và Deque) để ném IllegalStateException này ở các điều kiện cụ thể.

Khi nào thì IllegalStateException sẽ được ném

  • IllegalStateExceptionexception sẽ bị loại bỏ khi chúng tôi cố gọi một phương thức cụ thể vào thời điểm không thích hợp.
  • Trong trường hợp java.util.List bộ sưu tập, chúng tôi sử dụng next () phương pháp của Danh sách Trình lặp lại giao diện để xem qua java.util.List. Nếu chúng tôi gọi là remove () phương thức của ListIterator trước khi gọi next () thì ngoại lệ này sẽ được ném ra vì nó sẽ rời khỏi Danh sách bộ sưu tập không ổn định trạng thái .
  • Nếu chúng tôi muốn sửa đổi một đối tượng cụ thể, chúng tôi sẽ sử dụng set () phương thức của ListIterator giao diện
  • Trong trường hợp hàng đợi , nếu chúng tôi cố gắng thêm một phần tử vào Hàng đợi , thì chúng ta phải đảm bảo rằng hàng đợi không bị đầy. Nếu hàng đợi này đã đầy thì chúng tôi không thể thêm phần tử đó, khi đó nó sẽ gây ra IllegalStateExceptionexception được ném.

Ví dụ

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);
   }
}

Đầu ra

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