Tratamento de exceções em Java

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…

studying

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.

  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 podem possuir 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 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.

hierarquiaexcecoes

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.

12 comentários em “Tratamento de exceções em Java”

  1. 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

  2. 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

  3. 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

  4. Alcino J Lincoln de Souza

    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.

  5. 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

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *