Imagem do artigo Tratamento de exceções e a hierarquia de exceções em Java: Throwing exceptions

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

Página 105 | Ouça em áudio

17.3 Tratamento de Exceções e a Hierarquia de Exceções em Java: Throwing Exceptions

O tratamento de exceções é um dos conceitos mais importantes na programação Java, pois permite que os programas lidem com situações anormais de maneira controlada. Uma exceção é um evento que ocorre durante a execução de um programa e que interrompe o fluxo normal de instruções. O mecanismo de tratamento de exceções em Java é robusto e baseia-se em cinco palavras-chave: try, catch, finally, throw e throws.

Hierarquia de Exceções em Java

Em Java, todas as classes de exceções são descendentes da classe Throwable. A classe Throwable tem duas subclasses diretas: Error e Exception. Erros são condições graves que um programa normal não deve tentar capturar, como OutOfMemoryError. Já as exceções são condições que um programa deve capturar e tratar.

A classe Exception tem muitas subclasses que representam diferentes tipos de exceções. As exceções em Java são divididas em duas categorias principais:

  • Exceções Verificadas (Checked Exceptions): São exceções que devem ser tratadas ou declaradas no código. Elas são verificadas em tempo de compilação. Exemplos incluem IOException, SQLException, entre outras.
  • Exceções Não Verificadas (Unchecked Exceptions): São exceções que não precisam ser explicitamente tratadas ou declaradas. Elas são verificadas em tempo de execução. Exemplos incluem RuntimeException, NullPointerException, ArithmeticException, entre outras.

Throwing Exceptions

Em Java, quando queremos lançar uma exceção, usamos a palavra-chave throw. Isso é feito quando queremos indicar que um método encontrou uma situação que não pode lidar. Para lançar uma exceção, você deve instanciar um objeto da classe de exceção apropriada e passá-lo para a palavra-chave throw.


try {
    // Código que pode lançar uma exceção
    if (algumaCondição) {
        throw new Exception("Descrição da Exceção");
    }
} catch (Exception e) {
    // Código para tratar a exceção
    e.printStackTrace();
}

Ao lançar uma exceção, o fluxo normal do programa é interrompido e o controle é transferido para o primeiro bloco catch compatível na pilha de chamadas. Se não houver nenhum bloco catch que possa lidar com a exceção, o programa terminará.

Tratando Exceções

O tratamento de exceções é feito usando os blocos try e catch. O bloco try contém o código que pode lançar uma exceção, enquanto o bloco catch contém o código que lida com a exceção. Podemos ter múltiplos blocos catch para tratar diferentes tipos de exceções.


try {
    // Código que pode lançar uma exceção
} catch (IOException e) {
    // Código para tratar IOException
} catch (SQLException e) {
    // Código para tratar SQLException
} catch (Exception e) {
    // Código para tratar qualquer outra exceção
}

É importante notar que os blocos catch são avaliados em ordem, e o primeiro bloco catch que é compatível com o tipo de exceção lançada é o que será executado. Portanto, os blocos catch para exceções mais específicas devem vir antes dos blocos para exceções mais gerais.

A Palavra-chave Finally

A palavra-chave finally é usada para criar um bloco de código que será executado independentemente de uma exceção ser lançada ou não. Este bloco é geralmente usado para fechar recursos, como arquivos ou conexões de banco de dados, que foram abertos no bloco try.


try {
    // Código que pode lançar uma exceção
} catch (Exception e) {
    // Código para tratar a exceção
} finally {
    // Código que será executado sempre, com ou sem exceção
}

Propagando Exceções

Às vezes, um método não pode ou não deve tratar uma exceção. Nesse caso, o método pode propagar a exceção para o método que o chamou usando a palavra-chave throws na declaração do método. Isso indica que o método pode lançar uma exceção do tipo especificado.


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

Quando um método declara uma exceção usando throws, qualquer outro método que chame esse método deve tratar a exceção ou também declará-la.

Conclusão

O tratamento de exceções é essencial para a criação de programas robustos e confiáveis em Java. Compreender a hierarquia de exceções e saber como lançar, tratar e propagar exceções são habilidades fundamentais para qualquer programador Java. Ao seguir as práticas recomendadas de tratamento de exceções, você pode garantir que seu programa possa lidar com situações inesperadas de forma elegante e continuar operando sem interrupção.

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: Tipos de exceções (checked e unchecked)

Próxima página do Ebook Gratuito:

106Tratamento de exceções e a hierarquia de exceções em Java: Tipos de exceções (checked e unchecked)

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