DEV Community

Java Efetivo (livro)
Java Efetivo (livro)

Posted on

Item 77: Não ignore as exceções

Definição

  • Ignorar exceções, especialmente com blocos catch vazios, compromete o propósito das exceções, que é forçá-lo a lidar com condições excepcionais.
  • Comparação: Ignorar uma exceção é como ignorar um alarme de incêndio — pode ter consequências desastrosas.

Problemas de ignorar exceções

  • Falhas silenciosas:
  • O programa pode prosseguir sem alertar sobre erros, causando falhas arbitrárias posteriormente.
  • Dificuldade de depuração:
  • Sem tratamento ou registro da exceção, informações cruciais para identificar problemas podem ser perdidas.
  • Comportamento inesperado:
  • O código pode falhar em locais aparentemente sem relação com a origem do erro.

Exemplo de má prática
Um bloco catch vazio que ignora a exceção:

try {
    // Código que pode lançar uma exceção
} catch (Exception e) {
    // Exceção ignorada!
}

Enter fullscreen mode Exit fullscreen mode

Situações em que ignorar exceções pode ser aceitável

  • Exemplo: Fechar um recurso como um FileInputStream, quando o estado do arquivo não foi alterado.
  • Regras para ignorar exceções de forma apropriada:

Registre a exceção para análise posterior:

try {
    fileInputStream.close();
} catch (IOException e) {
    e.printStackTrace(); // Registro da exceção
}

Enter fullscreen mode Exit fullscreen mode

Adicione um comentário explicando por que a exceção está sendo ignorada:

try {
    fileInputStream.close();
} catch (IOException ignored) {
    // Ignorado porque o arquivo já foi lido com sucesso.
}

Enter fullscreen mode Exit fullscreen mode

Conselhos gerais
Trate a exceção sempre que possível:

Exemplo de tratamento:

try {
    // Operação crítica
} catch (IOException e) {
    System.err.println("Erro ao realizar a operação: " + e.getMessage());
    // Tomar medidas corretivas ou lançar uma exceção mais específica
}

Enter fullscreen mode Exit fullscreen mode

Deixe a exceção se propagar, se necessário:

  • Permitir que a exceção seja lançada pode preservar informações importantes para depuração.
public void processFile() throws IOException {
    // O chamador decidirá como tratar a exceção
    fileInputStream.close();
}

Enter fullscreen mode Exit fullscreen mode

Evite blocos catch genéricos:

Evite capturar todas as exceções indiscriminadamente, como catch (Exception e).

Resumo Final
Nunca ignore exceções sem um motivo claro.
Se ignorar for inevitável:
Explique o motivo com um comentário.
Registre a exceção para facilitar futuras investigações.
Tratar ou propagar exceções de maneira adequada pode evitar falhas silenciosas e facilitar a manutenção e a depuração do código.


Image description

Image description

Image of Datadog

How to Diagram Your Cloud Architecture

Cloud architecture diagrams provide critical visibility into the resources in your environment and how they’re connected. In our latest eBook, AWS Solution Architects Jason Mimick and James Wenzel walk through best practices on how to build effective and professional diagrams.

Download the Free eBook

Top comments (0)

Hostinger image

Get n8n VPS hosting 3x cheaper than a cloud solution

Get fast, easy, secure n8n VPS hosting from $4.99/mo at Hostinger. Automate any workflow using a pre-installed n8n application and no-code customization.

Start now

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay