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

¿Cuándo se lanza IllegalStateException y IllegalArgumentException? En Java?

IllegalStateException:

Cuando llama al método en un momento ilegal o inapropiado, se genera esta excepción y se crea el estado de excepción IlleagalState.

Por ejemplo,remove()El método de la clase ArrayList se llamanext()Después de eliminar el último elemento del método anterior o antes.

  • Después de eliminar el elemento en la posición actual, debe moverse al siguiente elemento para eliminarlo, es decir, cada vez que se llama a estenext()Al llamar a este método, solo se puede llamarremove()una vez este método.

  • Debido a que la posición inicial del puntero de la lista (índice) estará antes del primer elemento, no se puede llamar a este método sin llamar primero al siguiente método.

Si se llama a esteremove()método, de lo contrario lanzará java.lang.IllegalStateException.

Ejemplo

En el siguiente ejemplo, intentamos usarremove()El método elimina el elemento de ArrayList y luego se mueve al primer elemento

import java.util.ArrayList;
import java.util.ListIterator;
public class NextElementExample{
   public static void main(String args[]) {
      //Instanciar objeto ArrayList
      ArrayList<String> list = new ArrayList<String>();
      //Rellenar ArrayList-
      list.add("apples");
      list.add("mangoes");
      //Obtener el objeto Iterator de ArrayList
      ListIterator<String> it = list.listIterator();
      //Eliminar el elemento sin moverse a la primera posición
      it.remove();
   }
}

Excepción en tiempo de ejecución

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

IllegalArgumentException-IllegalArgumentException se lanzará cada vez que se pase un parámetro inapropiado a un método o constructor.

Ejemplo

valueOf()Los métodos de la clase java.sql.Date aceptan un valor en formato yyyy con escape JDBC- [m] m- [d] d representa una cadena de fecha y se convierte en el objeto java.sql.Date. Sin embargo, si se pasa una cadena de fecha en cualquier otro formato, este método lanzará 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("Ingrese su fecha de nacimiento en formato de escape JDBC (yyyy-mm-dd) ");
      String dateString = sc.next();
      Date date = Date.valueOf(dateString);
      System.out.println("Fecha dada convertida a objeto int: "+date);
   }
}

Excepción en tiempo de ejecución

Ingrese su fecha de nacimiento en formato de escape JDBC (yyyy-mm-dd)
26-07-1989
Excepción en hilo "main" java.lang.IllegalArgumentException
   en java.sql.Date.valueOf(Unknown Source)
   en july_ipoindi.NextElementExample.main(NextElementExample.java:11)
Te gustará también