Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial programming >> Java

Java captura múltiples excepciones

Java captura múltiples excepciones

En este tutorial, aprenderemos a manejar múltiples excepciones en Java con la ayuda de ejemplos.

Antes de Java 7, teníamos que escribir múltiples códigos de manejo de excepciones para diferentes tipos de excepciones, incluso si había redundancia de código.

Tomemos un ejemplo.

Ejemplo 1:Múltiples bloques catch

class Main {
  public static void main(String[] args) {
    try {
      int array[] = new int[10];
      array[10] = 30 / 0;
    } catch (ArithmeticException e) {
      System.out.println(e.getMessage());
    } catch (ArrayIndexOutOfBoundsException e) {
      System.out.println(e.getMessage());
    } 
  }
}

Salida

/ by zero

En este ejemplo, pueden ocurrir dos excepciones:

Estamos imprimiendo el mensaje de excepción tanto en el catch bloques, es decir, código duplicado.

La asociatividad del operador de asignación = es de derecha a izquierda, por lo que un ArithmeticException se lanza primero con el mensaje / por cero .


Manejar múltiples excepciones en un bloque catch

En Java SE 7 y versiones posteriores, ahora podemos capturar más de un tipo de excepción en un solo catch bloquear.

Cada tipo de excepción que puede manejar el catch el bloque se separa usando una barra vertical o tubería | .

Su sintaxis es:

try {
  // code
} catch (ExceptionType1 | Exceptiontype2 ex) { 
  // catch block
}

Ejemplo 2:bloque de captura múltiple

class Main {
  public static void main(String[] args) {
    try {
      int array[] = new int[10];
      array[10] = 30 / 0;
    } catch (ArithmeticException | ArrayIndexOutOfBoundsException e) {
      System.out.println(e.getMessage());
    }
  }
}

Salida

/ by zero

Captura de múltiples excepciones en un solo catch block reduce la duplicación de código y aumenta la eficiencia.

El código de bytes generado al compilar este programa será más pequeño que el programa que tiene múltiples catch bloques ya que no hay redundancia de código.

Nota: Si un catch bloque maneja múltiples excepciones, el parámetro catch es implícitamente final . Esto significa que no podemos asignar ningún valor a los parámetros de captura.


Excepción base de captura

Al capturar múltiples excepciones en un solo catch block, la regla se generaliza a especializada.

Esto significa que si hay una jerarquía de excepciones en el catch bloque, podemos capturar la excepción base solo en lugar de capturar múltiples excepciones especializadas.

Tomemos un ejemplo.

Ejemplo 3:capturar solo la clase de excepción base

class Main {
  public static void main(String[] args) {
    try {
      int array[] = new int[10];
      array[10] = 30 / 0;
    } catch (Exception e) {
      System.out.println(e.getMessage());
    }
  }
}

Salida

/ by zero

Sabemos que todas las clases de excepción son subclases del Exception clase. Entonces, en lugar de capturar múltiples excepciones especializadas, simplemente podemos capturar el Exception clase.


Si la clase de excepción base ya se ha especificado en el catch bloque, no use clases de excepción secundarias en el mismo catch bloquear. De lo contrario, obtendremos un error de compilación.

Tomemos un ejemplo.

Ejemplo 4:captura de clases de excepción base y secundaria

class Main {
  public static void main(String[] args) {
    try {
      int array[] = new int[10];
      array[10] = 30 / 0;
    } catch (Exception | ArithmeticException | ArrayIndexOutOfBoundsException e) {
      System.out.println(e.getMessage());
    }
  }
}

Salida

Main.java:6: error: Alternatives in a multi-catch statement cannot be related by subclassing

En este ejemplo, ArithmeticException y ArrayIndexOutOfBoundsException son ambas subclases del Exception clase. Entonces, obtenemos un error de compilación.


Java

  1. Operadores Java
  2. Comentarios Java
  3. Java para cada bucle
  4. Cadenas Java
  5. Interfaz Java
  6. Clase anónima de Java
  7. Prueba de Java ... captura
  8. Java lanza y lanza
  9. Prueba de Java con recursos
  10. Anotaciones Java
  11. Aserciones de Java