logo

Java finalmente bloqueia

Java finalmente bloqueia é um bloco usado para executar códigos importantes, como fechar a conexão, etc.

O bloco finalmente Java é sempre executado, independentemente de uma exceção ser tratada ou não. Portanto, contém todas as instruções necessárias que precisam ser impressas independente da ocorrência ou não da exceção.

O bloco final segue o bloco try-catch.

Fluxograma do bloco final

Java finalmente bloqueia

Nota: Se você não tratar a exceção, antes de encerrar o programa, a JVM executará o bloco finalmente (se houver).

Por que usar o bloco Java finalmente?

  • finalmente o bloco em Java pode ser usado para colocar ' limpar 'código como fechar um arquivo, fechar conexão, etc.
  • As declarações importantes a serem impressas podem ser colocadas no bloco final.

Uso de Java finalmente

Vamos ver os diferentes casos em que o bloco finalmente Java pode ser usado.

Caso 1: Quando uma exceção não ocorre

Vejamos o exemplo abaixo onde o programa Java não lança nenhuma exceção e o bloco finalmente é executado após o bloco 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...'); } } 

Saída:

Java finalmente bloqueia

Caso 2: Quando ocorre uma exceção, mas não é tratada pelo bloco catch

Vejamos o exemplo a seguir. Aqui, o código lança uma exceção, mas o bloco catch não consegue lidar com isso. Apesar disso, o bloco finalmente é executado após o bloco try e então o programa termina de forma 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...'); } } 

Saída:

Java finalmente bloqueia

Caso 3: Quando ocorre uma exceção e é tratada pelo bloco catch

Exemplo:

Vejamos o exemplo a seguir, onde o código Java lança uma exceção e o bloco catch trata a exceção. Posteriormente, o bloco finalmente é executado após o bloco try-catch. Além disso, o restante do código também é executado 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...'); } } 

Saída:

Java finalmente bloqueia

Regra: Para cada bloco try pode haver zero ou mais blocos catch, mas apenas um bloco finalmente.

Nota: O bloco final não será executado se o programa for encerrado (seja chamando System.exit() ou causando um erro fatal que faz com que o processo seja abortado).