Bloques de prueba anidados en el manejo de excepciones en Java

En Java , podemos usar un bloque de prueba dentro de un bloque de prueba. Cada vez que se ingresa una declaración de prueba, el contexto de esa excepción se coloca en una pila. A continuación se muestra un ejemplo de un intento anidado.
En este ejemplo, el bloque de prueba interno (o bloque de prueba2) se usa para manejar la excepción ArithmeticException, es decir, la división por cero. Después de eso, el bloque de prueba externo (o bloque de prueba) maneja la ArrayIndexOutOfBoundsException.

Ejemplo 1:

class NestedTry {
  
    // main method
    public static void main(String args[])
    {
        // Main try block
        try {
  
            // initializing array
            int a[] = { 1, 2, 3, 4, 5 };
  
            // trying to print element at index 5
            System.out.println(a[5]);
  
            // try-block2 inside another try block
            try {
  
                // performing division by zero
                int x = a[2] / 0;
            }
            catch (ArithmeticException e2) {
                System.out.println("division by zero is not possible");
            }
        }
        catch (ArrayIndexOutOfBoundsException e1) {
            System.out.println("ArrayIndexOutOfBoundsException");
            System.out.println("Element at such index does not exists");
        }
    }
    // end of main method
}
Producción:

ArrayIndexOutOfBoundsException
Element at such index does not exists

Cada vez que un bloque de prueba no tiene un bloque de captura para una excepción en particular, los bloques de captura del bloque de prueba principal se inspeccionan en busca de esa excepción, y si se encuentra una coincidencia, se ejecuta ese bloque de captura.

Si ninguno de los bloques catch maneja la excepción, el sistema de tiempo de ejecución de Java manejará la excepción y se mostrará un mensaje generado por el sistema para la excepción.

Ejemplo 2:

class Nesting {
    // main method
    public static void main(String args[])
    {
        // main try-block
        try {
  
            // try-block2
            try {
  
                // try-block3
                try {
                    int arr[] = { 1, 2, 3, 4 };
                    System.out.println(arr[10]);
                }
  
                // handles ArithmeticException if any
                catch (ArithmeticException e) {
                    System.out.println("Arithmetic exception");
                    System.out.println(" try-block1");
                }
            }
  
            // handles ArithmeticException if any
            catch (ArithmeticException e) {
                System.out.println("Arithmetic exception");
                System.out.println(" try-block2");
            }
        }
  
        // handles ArrayIndexOutOfBoundsException if any
        catch (ArrayIndexOutOfBoundsException e4) {
            System.out.print("ArrayIndexOutOfBoundsException");
            System.out.println(" main try-block");
        }
        catch (Exception e5) {
            System.out.print("Exception");
            System.out.println(" handled in main try-block");
        }
    }
}
Producción:

ArrayIndexOutOfBoundsException main try-block

Publicación traducida automáticamente

Artículo escrito por Shivam_72 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *