Article image
Allamy Pereira
Allamy Pereira06/02/2024 23:30
Compartilhe

Entendendo o Bloco try-catch em Java

  • #Java

O bloco try-catch é uma funcionalidade que permite que o programador lide com exceções que ocorram, controlando o fluxo de execução do código em situações imprevistas.

Caso ocorra alguma exceção dentro do bloco try, a execução do código será desviada para dentro do bloco catch correspondente permitindo um maior controle do fluxo do código sendo executado.

Sintaxe básica

A sintaxe básica do bloco try-catch em java é a seguinte

 try{
   // Código que pode gerar uma exceção
  }

catch(TipoDeExcecao nomeDaExcecao){
    // Código para lidar com a exceção
    }   
    
finally{
      // Código a ser executado independentemente de ocorrer ou não uma exceção. O finally é opcional.
        } 

try: Esse é o local onde você deve inserir o código suscetível a erros.

catch: Este bloco é usado para capturar as exceções que ocorrerem dentro do bloco try. Você pode ter vários blocos catch para capturar diferentes exceções de um mesmo bloco try.

Finally (opcional): O bloco finally é opcional e é usado para especificar código que deve ser executado independentemente de ocorrer ou não uma exceção dentro do bloco try.

Tipos de Exceções

Existem dois tipos de exceções :

Exceções Verificadas: Estas são exceções que o compilador Java exige que você trate explicitamente usando um bloco try-catch ou declarando-as na assinatura do método. Exemplos incluem IOException, SQLException, entre outras.

Não verificadas: Estas são exceções que ocorrem durante a execução do programa e não são verificadas pelo compilador. Exemplos incluem NullPointerException, ArrayIndexOutOfBoundsException, ArithmeticException e etc.

Hierarquia das Exceções em Java

image

Fonte:( https://www.linkedin.com/pulse/mastering-error-exception-handling-deep-dive-reliable-singh-m7nef/ )

Exemplo Prático

Exemplo 1:

 // Inicia o bloco try, onde colocamos o código que pode gerar uma exceção
try {

   // Cria um objeto BufferedReader para ler o arquivo "arquivo.txt"
  BufferedReader br = new BufferedReader(new FileReader("arquivo.txt")); 

   // declaração de variável 
   String linha;

   // Loop que lê cada linha do arquivo até que não haja mais linhas (linha = null)
   while ((linha = br.readLine()) != null) { 
         System.out.println(linha); 
                                           }


          br.close(); // Fecha o BufferedReader para liberar os recursos

  // Captura uma exceção do tipo IOException, que pode ocorrer durante a leitura 
      } catch (IOException e) { 


          System.err.println("Erro ao ler o arquivo: " + e.getMessage()); // Imprime uma mensagem de erro específica para a exceção.
   
 } finally { // Bloco opcional que sempre é executado, independentemente de ocorrer uma exceção ou não


          System.out.println("Finalizando programa..."); 
      }

No exemplo acima, tentamos ler linhas de um arquivo. Se acontecer uma exceção durante a leitura do arquivo, ela é capturada pelo bloco catch, e uma mensagem de erro é exibida. O bloco finally garante que o BufferedReader seja fechado corretamente, independentemente de ocorrer uma exceção ou não.

Exemplo 2:

try {
    int resultado = dividir(50, 0); 
     System.out.println("Resultado da divisão: " + resultado); 
      } catch (ArithmeticException e) { 
          System.err.println("Erro: Divisão por zero."); 
      }
  }
  public static int dividir(int a, int b) { 
      return a / b;
  }

Neste exemplo, tentamos realizar uma operação de divisão de dois números inteiros dentro do método dividir(). Se o divisor for zero, uma exceção do tipo ArithmeticException será lançada. Esta exceção é capturada no bloco catch, onde uma mensagem de erro específica é impressa no console. Isso evita que o programa seja interrompido abruptamente devido à exceção não tratada. 

Boas Práticas 

Trate Exceções Específicas: Sempre que possível, capture exceções específicas em vez de usar um bloco catch genérico. Isso permite um tratamento mais adequado e específico para cada tipo de exceção.

Mantenha Blocos Catch Curtos: Evite colocar muito código dentro de um bloco catch. Mantenha-os concisos e focados apenas no tratamento da exceção.

Evite Capturar Exceções Demais: Evite capturar exceções demais em um único bloco try-catch. Isso pode obscurecer erros reais e dificultar a depuração.

Conclusão 

O uso de blocos try-catch deve ser implementado quando algum trecho de código pode gerar exceções e desejamos que essas exceções tenham um tratamento específico. Isso ajuda a manter a estabilidade e manutenção do seu código.

Compartilhe
Comentários (3)
Carla Silva
Carla Silva - 08/02/2024 10:07

Ótimo, parabéns pela explicação!

IN

Irajane Nunes - 07/02/2024 12:59

Excelente explicação! Aprendendo contigo.

Erick Silvestre
Erick Silvestre - 06/02/2024 23:49

Excelente explicação! Parabéns!!!