Hoje vou falar um pouquinho sobre o tratamento de exceções em Java. Apresentarei por que 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 têm 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.
1. As palavras try e catch servem para informar a JVM o que fazer quando ocorrer uma exceção.
2. Os blocos catch devem aparecer após o try (isso é um requisito); entre os blocos não pode haver nenhuma instrução.
3. Quando uma exceção é identificada no try{} o restante do código não é executado e não há um retorno para o término do código.
Exceções verificadas e não verificadas
– Toda exceção verificada deriva da class Exception.
– As [cor1]não verificadas[/cor1] ou não-checadas derivam 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çada 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 é conhecida 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.







