Olá amigos, colegas e leitores!
Hoje vou falar um pouquinho sobre o tratamento de exceções em Java. Apresentarei o porque usar, sua estrutura e o que é uma exceção. É comum para os iniciantes nos estudos com Java, ao chegar no assunto “Tratamento de Exceções” não conseguir visualizar a utilidade desse recurso e confundir os resultados com as instruções condicionais.
Para não ficar um artigo muito grande e cansativo, teremos um outro para complementar o que foi discutido aqui, porém de modo prático.
Let’s go…
Mas a pergunta é: Por que usar tratamento de exceções?
Usar tratamento de exceções permite detectar erros e manipular esses erros, ou seja, tratá-los.
Instruções condicionais & Tratamento de exceções.
A grande diferença, é que instruções não servem para tratar erros e sim para testar condições se X não for verdadeiro. Assim: ao contrário das exceções que tem como objetivo detectar áreas onde possíveis erros possam acontecer e tratá-lo. Lembre o fato de um programador colocar dentro de uma instrução if…else que, se o usuário não digitar os valores válidos, informa que está errado. Isso não quer dizer que aconteceu um erro e ele foi tratado, apenas que, a condição esperada não aconteceu.
Agora veremos abaixo a estrutura de como tratar um erro ou exceção:
try – é usada para indicar um bloco de código que possa ocorrer uma exceção.
catch – serve para manipular as exceções, ou seja, tratar o erro
finally – sempre será executado depois do bloco try/catch. O importante é saber que esse bloco sempre será executado (exceto nos casos de encerramento da jvm System.exit()).
Veja abaixo as combinações válidas e inválidas para o uso do try{}, cacth{} e finally{} (isso é questão de certificação).
Combinações válidas:
Inválidas não Compila:
O que é uma Exceção?
É uma ocorrência que altera o fluxo do programa. As exceções podem ocorrer por falhas de hardware, exaustão de recursos e erros.
- As palavras try e catch servem para informar a JVM o que fazer quando ocorrer uma exceção.
- Os blocos catch devem aparecer após o try (isso é um requisito); entre os blocos não podem possuir nenhuma instrução.
- Quando uma exceção é identificada no try{} o restante do código não é executado e não há um retorno para o termino do código.
Exceções verificadas e não verificadas
- Toda exceção verificada deriva da class Exception.
- As não verificadas ou não-checadas, deriva da class RuntimeException.
Throwable – é o pai de todas as exceções.
Error – não são exceções e sim erros que jamais poderiam ter acontecido. ex.: estouro da memória.
Exception– as classes que deveriam aqui, lançar exceções e não erros de programação. Exemplo: tentar abrir um arquivo que não existe. Então, é lançado uma exceção verificada, porque a classe de leitura de arquivos deriva de Exception.
RuntimeException – são exceções que indicam erros de programas (não de lógica, pois senão não passaria pelo compilador). Esse tipo de exceção é conhecido como não verificada. Sendo assim, não é requisito declarar uma cláusula try{} e catch{}. Ex.: tentar converter “dois” em “2”.
Obs.: Implicitamente, todas as classes em java automaticamente já lançam uma exceção de RuntimeException.
Hierarquia
Espero que tenham gostado. Um abraço a todos e até o próximo. Abraços! Não deixem de acessar meu blog.