English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Когда вызывается IllegalStateException и IllegalArgumentException в Java?

IllegalStateException:

При вызове метода в незаконное или неуместное время возникает эта исключительная ситуация, и создается IlleagalStateException.

Например,remove()Методы класса ArrayList вызываютсяnext()или предыдущего метода удалите последний элемент.

  • В当前位置е удалите элемент, а затем переместитесь к следующему элементу для его удаления, то есть, каждый раз при вызове этойnext()методом, вы можете вызватьremove()один раз этим методом.

  • Поскольку начальная позиция списка (указателя) будет перед первым элементом, этот метод можно вызвать только после вызова следующего метода.

Если вызывается该方法remove()метод, в противном случае он вызовет java.lang.IllegalStateException.

Пример

В следующем примере мы пытаемся использовать методremove()Метод удаляет элемент из ArrayList и затем перемещается к первому элементу

import java.util.ArrayList;
import java.util.ListIterator;
public class NextElementExample{
   public static void main(String args[]) {}}
      //Создать объект ArrayList
      ArrayList<String> list = new ArrayList<String>();
      //Заполнить ArrayList-
      list.add("apples");
      list.add("mangoes");
      //Получить объект Iterator для ArrayList
      ListIterator<String> it = list.listIterator();
      //Удалить элемент, не перемещаясь в первую позицию
      it.remove();
   }
}

Время выполнения ошибки

Exception in thread "main" java.lang.IllegalStateException
   at java.util.ArrayList$Itr.remove(Unknown Source)
   at MyPackage.NextElementExample.main(NextElementExample.java:17)

IllegalArgumentException-IllegalArgumentException будет выброшен каждый раз, когда вы передаете недопустимый параметр методу или конструктору.

Пример

valueOf()Метод класса java.sql.Date принимает строку даты в формате JDBC-эскейп yyyy- [m] m- [d], где d представляет дату, и преобразует её в объект java.sql.Date. Однако, если передается строка даты в любом другом формате, этот метод вызывает IllegalArgumentException.

import java.sql.Date;
import java.util.Scanner;
public class IllegalArgumentExample {
   public static void main(String args[]) {}}
      Scanner sc = new Scanner(System.in);
      System.out.println("Введите дату рождения в формате JDBC escape (yyyy-mm-dd) ");
      String dateString = sc.next();
      Date date = Date.valueOf(dateString);
      System.out.println("Given date converted int to an object: " + date);
   }
}

Время выполнения ошибки

Введите дату рождения в формате JDBC escape (yyyy-mm-dd)
26-07-1989
Exception in thread "main" java.lang.IllegalArgumentException
   at java.sql.Date.valueOf(Unknown Source)
   at july_ipoindi.NextElementExample.main(NextElementExample.java:11)
Рекомендуем к просмотру