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

¿Cómo manejar automáticamente IllegalArgumentException en la condición 'if' de Java?

Cada vez que le pasa un parámetro inapropiado al método o constructor, se lanza IllegalArgumentException. Esta es una excepción de tiempo de ejecución, por lo que no es necesario manejar esta excepción en tiempo de compilación.

Ejemplo

valueOf()Los métodos de la clase java.sql.Date aceptan un formato de escape JDBCyyyy- [m] m- [d] dCadena que representa la fecha y se convierte en el objeto java.sql.Date.

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

Resultado de salida

Ingrese su fecha de nacimiento en el formato de escape JDBC (yyyy-mm-dd)
1989-09-26
Fecha dada convertida en un objeto: 1989-09-26

Pero, si transmite la 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 el 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 el formato de escape JDBC (yyyy-mm-dd)
26-07-1989
Exception en hilo "main" java.lang.IllegalArgumentException
   at java.sql.Date.valueOf(Unknown Source)
   at july_ipoindi.NextElementExample.main(NextElementExample.java:11)
En el siguiente ejemplo de Java, el constructor de Date (en realidad obsoleto) acepta

Ejemplo

setPriority()Los métodos de la clase Thread aceptan un valor entero que representa la prioridad del hilo y lo establecen para el hilo actual. Sin embargo, el valor transmitido a este método debe ser menor que la prioridad máxima del hilo, de lo contrario, este método lanzaráIllegalArgumentException.

public class IllegalArgumentExample {
   public static void main(String args[]) {
      Thread thread = new Thread();
      System.out.println(thread.MAX_PRIORITY);
      thread.setPriority(12);
   }
}

Excepción en tiempo de ejecución

10Exception en hilo "main"
java.lang.IllegalArgumentException
   at java.lang.Thread.setPriority(Unknown Source)
   at july_ipoindi.NextElementExample.main(NextElementExample.java:6)

Manejo de IllegalArgumentException en condiciones if

Al utilizar métodos que generan IllegalArgumentException, ya que conoce sus parámetros válidos, puede usar if anticipadamente-límite de condición/Verificar los parámetros y evitar la aparición de excepciones.

Ejemplo

import java.util.Scanner;
public class IllegalArgumentExample {
   public static void main(String args[]) {
      Thread thread = new Thread();
      System.out.println("Introduzca el valor de prioridad de hilo: ");
      Scanner sc = new Scanner(System.in);
      int priority = sc.nextInt();
      if(priority<=Thread.MAX_PRIORITY) {
         thread.setPriority(priority);
      }
         System.out.println("El valor de prioridad debe ser menor que: ");+Thread.MAX_PRIORITY);
      }
   }
}

Resultado de salida

Introduzca el valor de prioridad de hilo:
15
El valor de prioridad debe ser menor que: 10
Te gustará