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.
Próxima página do Ebook Gratuito: