logo

Java finalmente bloquea

Java finalmente bloquea es un bloque utilizado para ejecutar código importante como cerrar la conexión, etc.

El bloque finalmente de Java siempre se ejecuta independientemente de que se maneje o no una excepción. Por lo tanto, contiene todas las declaraciones necesarias que deben imprimirse independientemente de que ocurra o no la excepción.

El bloque finalmente sigue al bloque try-catch.

Diagrama de flujo del bloque finalmente

Java finalmente bloquea

Nota: Si no maneja la excepción, antes de finalizar el programa, JVM ejecuta el bloque finalmente (si corresponde).

¿Por qué utilizar Java finalmente bloquear?

  • finalmente el bloque en Java se puede usar para poner ' limpiar 'código como cerrar un archivo, cerrar una conexión, etc.
  • Las declaraciones importantes que se imprimirán se pueden colocar en el bloque finalmente.

Uso de Java finalmente

Veamos los diferentes casos en los que se puede utilizar el bloque Java finalmente.

Caso 1: Cuando no ocurre una excepción

Veamos el siguiente ejemplo donde el programa Java no arroja ninguna excepción y el bloque finalmente se ejecuta después del bloque try.

TestFinallyBlock.java

 class TestFinallyBlock { public static void main(String args[]){ try{ //below code do not throw any exception int data=25/5; System.out.println(data); } //catch won't be executed catch(NullPointerException e){ System.out.println(e); } //executed regardless of exception occurred or not finally { System.out.println('finally block is always executed'); } System.out.println('rest of phe code...'); } } 

Producción:

Java finalmente bloquea

Caso 2: cuando ocurre una excepción pero no es manejada por el bloque catch

Veamos el siguiente ejemplo. Aquí, el código genera una excepción, pero el bloque catch no puede manejarla. A pesar de esto, el bloque finalmente se ejecuta después del bloque try y luego el programa finaliza de manera anormal.

TestFinallyBlock1.java

 public class TestFinallyBlock1{ public static void main(String args[]){ try { System.out.println('Inside the try block'); //below code throws divide by zero exception int data=25/0; System.out.println(data); } //cannot handle Arithmetic type exception //can only accept Null Pointer type exception catch(NullPointerException e){ System.out.println(e); } //executes regardless of exception occured or not finally { System.out.println('finally block is always executed'); } System.out.println('rest of the code...'); } } 

Producción:

Java finalmente bloquea

Caso 3: cuando ocurre una excepción y es manejada por el bloque catch

Ejemplo:

Veamos el siguiente ejemplo donde el código Java genera una excepción y el bloque catch maneja la excepción. Posteriormente, el bloque finalmente se ejecuta después del bloque try-catch. Además, el resto del código también se ejecuta normalmente.

TestFinallyBlock2.java

 public class TestFinallyBlock2{ public static void main(String args[]){ try { System.out.println('Inside try block'); //below code throws divide by zero exception int data=25/0; System.out.println(data); } //handles the Arithmetic Exception / Divide by zero exception catch(ArithmeticException e){ System.out.println('Exception handled'); System.out.println(e); } //executes regardless of exception occured or not finally { System.out.println('finally block is always executed'); } System.out.println('rest of the code...'); } } 

Producción:

Java finalmente bloquea

Regla: Para cada bloque de prueba puede haber cero o más bloques de captura, pero solo un bloque finalmente.

Nota: El bloque finalmente no se ejecutará si el programa sale (ya sea llamando a System.exit() o provocando un error fatal que hace que el proceso aborte).