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.
Lets 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:
try{} |
catch{} |
|
try{} |
finally{} |
|
try{} |
catch{} |
finally{} |
Inválidas não Compila:
try{} |
— |
— |
catch{} |
finally{} |
— |
try{} |
finally{} |
catch{} |
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.
Figura1 – Hierarquia Exceções (nao sou muito bom de desenho rs)
Espero que tenham gostado. Um abraço a todos e até o próximo. Abraços! Não deixem de acessar meu blog.
Muito bom o post. Parabéns.
Muito bom, bem didático.
Opa, saindo do hiper básico do Visual Basic e encarando o Java.
Nada como, de cara, achar uma fonte de referência…
Voltarei com frequencia
Abraços
Optimo post.
Muito obrigada
Boa noite, tudo bem?
Gostei de como abordas os conceitos de Java.
Gostaria de receber a partir deste e-mail, tutorias
mais actualizados sobre Java + bancos de dados.
Abraco
Muito bom mesmo !!!
Li 3 livros de java com objetivo de intender a filosofia do tratamento de exceção, comecei a ler os livros com dúvidas e terminei de ler com frustração. Mais vc conseguiu exclarecer as dúvidas em poucas linhas, parabems
Valeu Lopes é bem interessante esse tipo de informação bem detalhada para termos segurança do que estamos fazendo, tem muita gente por ai inserindo códigos que mal sabem o que fazem.
Gostei muito também da post sobre Conexão tirou algumas duvidas que eu ainda tinha! Obrigado.
Mto Bom esse blog.
Faço faculdade de ciência da computação e estava com duvidas sobre exceções em java, mas esse post me tirou todas!!
Vlw