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
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:
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:
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: