Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Industrial programming >> Java

Dominando Tratamento de Exceções em Java: Try, Catch, Finally, Throw e Throws Explicados

Dominando Tratamento de Exceções em Java

Este guia percorre os mecanismos de tratamento de exceções do Java — try-catch, finally, throw e throws — com exemplos claros e dicas de boas práticas.

Na lição anterior introduzimos exceções Java e por que interrompem fluxo de programa. Tratar essas exceções graciosamente é essencial para código robusto e sustentável.

Abaixo estão as estratégias primárias para gerenciar exceções em Java:


1. Usando Bloco try…catch

A construção try…catch é a pedra angular do modelo de tratamento de erros do Java. Coloque qualquer código que possa lançar exceção dentro do bloco try, e capture exceções específicas depois.

try { // código que pode lançar } catch(Exception e) { // tratar exceção }

A cláusula catch é obrigatória sempre que um bloco try aparece; ela intercepta a exceção e permite resposta apropriada.

Exemplo: Tratando ArithmeticException

class Main { public static void main(String[] args) { try { int divisaoPorZero = 5 / 0; System.out.println("Resto do código no bloco try"); } catch (ArithmeticException e) { System.out.println("ArithmeticException => " + e.getMessage()); } } }

Saída

ArithmeticException => / by zero

Neste snippet, a divisão por zero dispara ArithmeticException. A exceção é capturada, o bloco catch executa, e qualquer código após a exceção dentro do try é pulado.

Se o bloco try completa sem lançar, o bloco catch é simplesmente ignorado.


2. Aproveitando o Bloco finally

Um bloco finally sempre roda, independentemente de exceção ter sido lançada. É local ideal para tarefas de limpeza — fechar arquivos, liberar recursos ou logging.

Apenas um bloco finally pode acompanhar uma dada instrução try.

try { // código } catch (TipoExcecao1 e1) { // tratar } finally { // sempre executado }

Exemplo: finally Após Exceção

class Main { public static void main(String[] args) { try { int divisaoPorZero = 5 / 0; } catch (ArithmeticException e) { System.out.println("ArithmeticException => " + e.getMessage()); } finally { System.out.println("Este é o bloco finally"); } } }

Saída

ArithmeticException => / by zero Este é o bloco finally

O bloco finally executa após o catch, garantindo que código crítico de limpeza rode mesmo se exceção ocorrer.

Boa prática: Use finally para qualquer código que deve rodar independentemente de sucesso ou falha, como fechar streams ou resetar estado compartilhado.


3. Lançando Exceções Explicitamente e Declarando Throws

A palavra-chave throw permite lançar exceção manualmente. Quando lançada, controle salta diretamente para o catch correspondente mais próximo.

Exemplo: Usando throw

class Main { public static void dividirPorZero() { throw new ArithmeticException("Tentando dividir por 0"); } public static void main(String[] args) { dividirPorZero(); } }

Saída

Exception in thread "main" java.lang.ArithmeticException: Trying to divide by 0 at Main.dividirPorZero(Main.java:5) at Main.main(Main.java:9)

A cláusula throws, por outro lado, declara que um método pode propagar certas exceções checked. Sinaliza aos chamadores que eles devem tratar ou propagar a exceção.

Exemplo: Usando throws com I/O de Arquivo

import java.io.*; class Main { // Declarar que este método pode lançar IOException public static void encontrarArquivo() throws IOException { File novoArquivo = new File("test.txt"); FileInputStream stream = new FileInputStream(novoArquivo); } public static void main(String[] args) { try { encontrarArquivo(); } catch (IOException e) { System.out.println(e); } } }

Saída

java.io.FileNotFoundException: test.txt (O sistema não pode encontrar o arquivo especificado)

Se o arquivo não existe, FileInputStream lança FileNotFoundException, que é subclasse de IOException. Como encontrarArquivo() declara throws IOException, o método main deve tratá-la.

Quando um método não captura exceção internamente, você deve declará-la com throws para informar chamadores da falha potencial.

Para insight mais profundo, explore a documentação Java de throw e throws.

Java

  1. Dominando Operadores Java: Tipos, Sintaxe e Exemplos Práticos
  2. Comentários em Java: Tipos, Uso e Boas Práticas
  3. Dominando o Loop for Aprimorado em Java: Sintaxe, Exemplos e Boas Práticas
  4. Dominando Strings em Java: Criação, Métodos e Boas Práticas
  5. Dominando Interfaces em Java: Conceitos, Implementação e Boas Práticas
  6. Dominando Classes Internas Anônimas em Java: Definição, Sintaxe e Exemplos Práticos
  7. Dominando Tratamento de Exceções em Java: Try, Catch, Finally e Resources
  8. Dominando Try-With-Resources em Java: Gerenciamento Automático de Recursos Explicado
  9. Anotações em Java Explicadas: Tipos, Posicionamento e Exemplos Práticos
  10. Asserções em Java: Guia Prático para Detectar Bugs e Garantir Confiabilidade do Código