logo

Java finalment bloqueja

Java finalment bloqueja és un bloc utilitzat per executar codi important com tancar la connexió, etc.

Finalment, el bloc Java sempre s'executa tant si es gestiona una excepció com si no. Per tant, conté totes les declaracions necessàries que s'han d'imprimir independentment de l'excepció que es produeixi o no.

El bloc final segueix el bloc try-catch.

Diagrama de flux del bloc finally

Java finalment bloqueja

Nota: Si no gestioneu l'excepció, abans de finalitzar el programa, JVM executarà finalment el bloc (si n'hi ha).

Per què utilitzar Java finalment bloquejar?

  • finalment el bloc a Java es pot utilitzar per posar ' netejar ', com ara tancar un fitxer, tancar la connexió, etc.
  • Les declaracions importants a imprimir es poden col·locar al bloc finally.

Ús de Java finalment

Vegem els diferents casos en què Java finalment es pot utilitzar el bloc.

Cas 1: quan no es produeix una excepció

Vegem l'exemple següent on el programa Java no llança cap excepció i el bloc final s'executa després del bloc 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...'); } } 

Sortida:

Java finalment bloqueja

Cas 2: quan es produeix una excepció però no la gestiona el bloc catch

Vegem l'exemple següent. Aquí, el codi llança una excepció, però el bloc catch no la pot gestionar. Malgrat això, el bloc finally s'executa després del bloc try i després el programa finalitza 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...'); } } 

Sortida:

Java finalment bloqueja

Cas 3: quan es produeix una excepció i la gestiona el bloc catch

Exemple:

Vegem l'exemple següent on el codi Java llança una excepció i el bloc catch gestiona l'excepció. Més tard, el bloc finally s'executa després del bloc try-catch. A més, la resta del codi també s'executa normalment.

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...'); } } 

Sortida:

Java finalment bloqueja

Regla: per a cada bloc d'intent hi pot haver zero o més blocs catch, però només un bloc finally.

Nota: El bloc finally no s'executarà si el programa surt (ja sigui cridant a System.exit() o provocant un error fatal que fa que el procés s'avorri).