当您在非法或不适当的时间调用方法时,会生成此异常,并生成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"); //获取ArrayList的Iterator对象 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表示日期的String,并将其转换为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); } }
Enter your date of birth in JDBC escape format (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)