17.10 Tratamento de Exceções e a Hierarquia de Exceções em Java

O tratamento de exceções em Java é um componente fundamental para construir aplicações robustas e confiáveis. Uma exceção é um evento que ocorre durante a execução de um programa, interrompendo o fluxo normal de instruções. Quando esse evento acontece, é necessário ter um mecanismo que capture e trate tal ocorrência para que o programa possa continuar operando ou terminar de maneira controlada.

Hierarquia de Exceções em Java

Em Java, todas as exceções são descendentes da classe Throwable. A partir dela, existem duas subclasses principais: Error e Exception. A classe Error é usada para condições sérias que uma aplicação normalmente não deve tentar capturar, como problemas na JVM (Java Virtual Machine). Já a classe Exception é aquela que você vai querer capturar e tratar em seu programa.

As exceções do tipo Exception são divididas em duas categorias: exceções verificadas (checked exceptions) e não verificadas (unchecked exceptions). As verificadas são aquelas que o compilador exige que sejam tratadas ou declaradas na assinatura do método através da cláusula throws. As não verificadas, que incluem as subclasses RuntimeException e Error, não precisam ser explicitamente tratadas ou declaradas.

Boas Práticas no Tratamento de Exceções

Um bom tratamento de exceções é crucial para a confiabilidade e manutenibilidade do código. Seguem algumas boas práticas:

  • Use exceções para condições excepcionais: Exceções devem ser usadas para situações anormais ou inesperadas. Não as use para controle de fluxo regular do programa.
  • Capture apenas exceções que você pode tratar: Não capture uma exceção a menos que você tenha uma estratégia clara para lidar com ela. Capturar uma exceção e não fazer nada pode esconder um problema no seu código.
  • Evite capturar Throwable ou Exception: Isso pode capturar mais do que você espera, incluindo erros que a JVM deveria tratar. Seja específico nas exceções que você captura.
  • Use blocos finally ou try-with-resources para liberar recursos: Sempre que você trabalha com recursos que precisam ser explicitamente fechados ou liberados (como conexões de banco de dados ou arquivos), use um bloco finally ou a construção try-with-resources para garantir que esses recursos sejam liberados mesmo se uma exceção ocorrer.
  • Preserve as informações da exceção original: Se você capturar uma exceção e lançar uma nova, certifique-se de incluir a exceção original como a causa. Isso ajuda a preservar a pilha de chamadas original que é inestimável para o diagnóstico de problemas.
  • Não use exceções para retornar códigos de erro: Exceções são para situações excepcionais, não para retornar códigos de erro de métodos. Use valores de retorno ou enumerações para esse propósito.
  • Documente as exceções lançadas pelos seus métodos: Use a tag @throws ou @exception nos comentários Javadoc para explicar quais exceções podem ser lançadas por um método e em que circunstâncias.
  • Considere criar suas próprias classes de exceção: Se as exceções padrão não descrevem adequadamente o problema, considere criar suas próprias classes de exceção. Isso pode proporcionar mais clareza ao tratar erros específicos de sua aplicação.

Exemplo de Tratamento de Exceções


try {
    // Código que pode lançar uma exceção
} catch (SpecificException ex) {
    // Código para tratar a exceção específica
} catch (AnotherException ex) {
    // Código para tratar outra exceção
} finally {
    // Código que será executado após o try ou catch, independentemente de uma exceção ter sido lançada ou não
}

Além disso, com a introdução do Java 7, o try-with-resources simplifica a liberação de recursos:


try (Resource resource = new Resource()) {
    // Trabalhe com o recurso
} catch (SpecificException ex) {
    // Trate exceções que podem ser lançadas
}

Em resumo, um tratamento de exceções eficaz e uma compreensão clara da hierarquia de exceções são vitais para escrever um código Java confiável e fácil de manter. Seguindo as boas práticas e utilizando os recursos da linguagem de forma adequada, você pode garantir que sua aplicação se comporte de maneira previsível diante de situações inesperadas.

Agora responda o exercício sobre o conteúdo:

Qual das seguintes afirmações sobre o tratamento de exceções em Java está correta?

Você acertou! Parabéns, agora siga para a próxima página

Você errou! Tente novamente.

Imagem do artigo Trabalhando com arquivos I/O em Java

Próxima página do Ebook Gratuito:

113Trabalhando com arquivos I/O em Java

5 minutos

Ganhe seu Certificado deste Curso Gratuitamente! ao baixar o aplicativo Cursa e ler o ebook por lá. Disponível na Google Play ou App Store!

Disponível no Google Play Disponível no App Store

+ de 6,5 milhões
de alunos

Certificado Gratuito e
Válido em todo o Brasil

48 mil exercícios
gratuitos

4,8/5 classificação
nas lojas de apps

Cursos gratuitos em
vídeo, áudio e texto