Imagem do artigo Tratamento de exceções e a hierarquia de exceções em Java: Try-catch-finally blocks

17.2. Tratamento de exceções e a hierarquia de exceções em Java: Try-catch-finally blocks

Página 104 | Ouça em áudio

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

O tratamento de exceções em Java é um dos pilares fundamentais para a construção de aplicações robustas e confiáveis. Exceções são eventos que ocorrem durante a execução de um programa que interrompem o fluxo normal de instruções. Quando uma exceção ocorre, é importante ter mecanismos para capturá-la e tratá-la de forma adequada, evitando assim que o programa termine de forma abrupta e possivelmente deixando o sistema em um estado inconsistente.

Try-Catch-Finally Blocks

O mecanismo primário para o tratamento de exceções em Java é composto pelos blocos try, catch e finally. Vamos entender como cada um deles funciona:

  • try: Um bloco try é usado para envolver o código que pode potencialmente lançar uma exceção. Se uma exceção é lançada dentro do bloco try, a execução do bloco é interrompida e o controle é passado para o bloco catch correspondente.

  • catch: O bloco catch é utilizado para capturar e tratar exceções. É possível ter múltiplos blocos catch após um único bloco try, cada um capturando um tipo específico de exceção. A execução do programa continua normalmente após o bloco catch ser executado.

  • finally: O bloco finally é opcional e é executado após a execução dos blocos try e catch, independentemente de uma exceção ter sido lançada ou não. Este bloco é geralmente utilizado para fechar recursos ou liberar memória, garantindo que determinadas operações sejam realizadas mesmo que uma exceção ocorra.

Um exemplo clássico do uso desses blocos é a leitura de um arquivo:


try {
    // Código que pode lançar uma exceção, como a abertura de um arquivo
} catch (FileNotFoundException e) {
    // Tratamento para o caso em que o arquivo não é encontrado
} catch (IOException e) {
    // Tratamento para outras exceções de I/O
} finally {
    // Fechar recursos, como um arquivo ou conexão de rede
}

Hierarquia de Exceções

As exceções em Java são objetos e seguem uma hierarquia de classes. A classe base para todas as exceções é Throwable, que possui duas subclasses diretas: Error e Exception.

  • Error: Representa problemas sérios que uma aplicação normalmente não deve tentar tratar. Erros são usados pelo Java Virtual Machine (JVM) para indicar problemas sérios que não estão relacionados diretamente à lógica do programa, como OutOfMemoryError, indicando que a JVM não tem mais memória disponível.

  • Exception: Representa condições que uma aplicação razoavelmente pode tentar recuperar. Dentro de Exception, existem duas categorias principais: exceções verificadas (checked exceptions) e não verificadas (unchecked exceptions).

As exceções verificadas são aquelas que devem ser capturadas ou declaradas no método que as lança, enquanto as não verificadas, que herdam de RuntimeException, não precisam ser explicitamente declaradas ou capturadas. Exceções não verificadas geralmente indicam erros de programação, como tentar acessar um índice fora dos limites de um array (ArrayIndexOutOfBoundsException).

É importante projetar cuidadosamente a estratégia de tratamento de exceções em um aplicativo Java. Aqui estão algumas práticas recomendadas:

  • Use exceções verificadas para problemas recuperáveis e exceções não verificadas para erros de programação.
  • Evite capturar exceções genéricas como Exception ou Throwable, pois isso pode capturar exceções não esperadas, dificultando a depuração.
  • Use blocos finally para liberar recursos, como streams de entrada/saída e conexões de banco de dados.
  • Quando capturar uma exceção, faça algo útil com ela, como logar o erro ou tomar uma ação corretiva.
  • Evite o uso excessivo de blocos try-catch, pois isso pode tornar o código difícil de ler e manter.

Para concluir, o tratamento de exceções é essencial para criar programas Java estáveis e confiáveis. Compreender a hierarquia de exceções e saber como usar os blocos try-catch-finally de forma eficaz é fundamental para qualquer desenvolvedor Java. Ao seguir as práticas recomendadas, você pode garantir que seu código esteja preparado para lidar com situações inesperadas sem comprometer a integridade do programa.

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 Tratamento de exceções e a hierarquia de exceções em Java: Throwing exceptions

Próxima página do Ebook Gratuito:

105Tratamento de exceções e a hierarquia de exceções em Java: Throwing exceptions

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