Imagem do artigo Tratamento de exceções e a hierarquia de exceções em Java: Introdução ao tratamento de exceções

17.1. Tratamento de exceções e a hierarquia de exceções em Java: Introdução ao tratamento de exceções

Página 103 | Ouça em áudio

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

O tratamento de exceções em Java é um mecanismo robusto que permite a um programa lidar com condições de erro de maneira controlada. 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, ela cria um objeto de exceção e o lança. O código que é responsável por tratar essa exceção deve capturá-la, usando um bloco try-catch ou declarando-a em sua assinatura através da palavra-chave throws.

Introdução ao Tratamento de Exceções

Em Java, o tratamento de exceções é feito principalmente através de quatro palavras-chave: try, catch, finally e throw. O bloco try é usado para envolver o código que pode lançar uma exceção. Se uma exceção ocorrer dentro do bloco try, ela é lançada e o fluxo de execução é transferido para o bloco catch correspondente, que é usado para capturar e tratar a exceção. O bloco finally, que é opcional, contém código que é sempre executado, independentemente de uma exceção ter sido lançada ou não. A palavra-chave throw é usada para lançar uma exceção explicitamente.

Hierarquia de Exceções

Java organiza suas exceções em uma hierarquia de classes. A classe base para todas as exceções é Throwable, que tem duas subclasses diretas: Error e Exception. Erros são condições graves que um aplicativo normalmente não deve tentar tratar, como OutOfMemoryError. Por outro lado, Exception inclui condições que um aplicativo pode querer capturar e tratar, como IOException ou SQLException.

Dentro da classe Exception, existem duas categorias principais: exceções verificadas e não verificadas. Exceções verificadas são aquelas que o compilador exige que sejam tratadas ou declaradas na assinatura do método, como IOException. Exceções não verificadas são aquelas que o compilador não exige que sejam explicitamente tratadas, como NullPointerException ou ArithmeticException. Estas últimas são subclasses de RuntimeException.

Utilizando Blocos Try-Catch

Quando se espera que um trecho de código possa lançar uma exceção, ele deve ser colocado dentro de um bloco try. Após este bloco, deve-se seguir um ou mais blocos catch, cada um projetado para capturar e tratar um tipo específico de exceção. O bloco catch recebe um parâmetro que é o objeto de exceção lançado. Dentro do bloco catch, o programador pode decidir como lidar com a exceção, como registrar um log, tentar uma recuperação ou simplesmente relançar a exceção.

try {
    // Código que pode lançar uma exceção
} catch (TipoExcecao1 e) {
    // Tratamento para TipoExcecao1
} catch (TipoExcecao2 e) {
    // Tratamento para TipoExcecao2
} finally {
    // Código que é executado após o try/catch, independentemente de uma exceção ter sido lançada
}

Usando o Bloco Finally

O bloco finally é um bloco opcional que pode ser usado após os blocos catch. O código dentro do bloco finally é garantido para ser executado após a execução dos blocos try e catch, independentemente de uma exceção ter sido lançada ou não. Isso é útil para limpeza de recursos, como fechar arquivos ou liberar conexões de banco de dados, que devem ser feitos mesmo se uma exceção ocorrer.

Lançando Exceções

Além de capturar exceções, Java permite que você lance suas próprias exceções usando a palavra-chave throw. Isso é útil quando você quer criar condições de erro personalizadas em seu código. Ao lançar uma exceção, você deve instanciar um objeto de uma classe de exceção e passá-lo para a palavra-chave throw.

if (condicaoErro) {
    throw new TipoExcecao("Mensagem de erro");
}

Declarando Exceções

Quando um método pode lançar uma exceção verificada que ele não trata, ele deve declarar essa exceção em sua assinatura usando a palavra-chave throws. Isso informa aos chamadores do método que eles devem tratar ou declarar essa exceção quando chamarem o método.

public void meuMetodo() throws TipoExcecao {
    // Código que pode lançar TipoExcecao
}

Conclusão

O tratamento de exceções é um aspecto crucial da programação Java, pois permite que os programas lidem com condições inesperadas de maneira controlada e elegante. A compreensão da hierarquia de exceções e o uso adequado dos blocos try, catch, finally, além do lançamento e declaração de exceções, são habilidades essenciais para qualquer desenvolvedor Java. Ao dominar esses conceitos, você pode escrever código mais robusto, confiável e fácil de manter.

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

Qual das seguintes afirmações sobre o tratamento de exceções em Java é 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: Try-catch-finally blocks

Próxima página do Ebook Gratuito:

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

4 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