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 كلاس يقبل قيمة String مسجلة بتنسيق JDBC yyyy- [m] m- [d] حيث d تمثل تاريخ، ويقوم بتحويلها إلى كائن java.sql.Date. ولكن إذا تم تمرير قيمة date String بأي تنسيق آخر، فإن هذا الطريقة ستعيد 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("Enter your date of birth in JDBC escape format (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
استثناء في نواة "main" java.lang.IllegalArgumentException
   في at java.sql.Date.valueOf(Unknown Source)
   في at july_ipoindi.NextElementExample.main(NextElementExample.java:11)
أنت قد تحب