Bruno Rafael de Oliveira Rodrigues Tratadores de Excessões A exceção é uma indicação de que um erro ou problema aconteceu durante a execução de uma aplicação. Essas exceções são aplicadas a trechos de código que apresentam um grau maior de possibilidade de que um erro possa vir a acontecer. Ao invés de um determinado programa ser finalizado, devido a uma falha, e possível realizar o tratamento de tais exceções, buscando manter a execução perfeita do programa, sem prejuízo algum ao usuário Cláusulas try / catch / finally try{ // escreva as instruções passíveis de gerar uma exceção neste bloco } catch (<tippdaexceção> <nomdavariavel>){ // escreva a ação que o seu programa fará caso ocorra uma exceção de um determinado } finally { // escreva a ação que o seu programa executará caso ocorra ou não um erro ou exceção } Exceções geradas durante a execução do bloco try podem ser detectadas e tratadas num bloco catch. O código no bloco finally é sempre executado, ocorrendo ou não a exceção. Sem utilizar exceção Utilizando a Exceção Podem existir quantas clausulas catch forem necessárias para o perfeito tratamento da aplicação. Podem ocorrer situações em que e desejável que sejam realizadas tarefas, mesmo após alguma falha, ou mesmo com o perfeito funcionamento da aplicação. Nesses casos, entra em cena a declaração da clausula finally em que pode ser definido o bloco que ira ser executado. Exception Exception possui por sua vez dezenas de subclasses pré-definidas na Plataforma Java, mas uma delas é especial: RuntimeException. Esta exceção indica erros em tempo de execução, resultantes de erros de configuração ou de dados inválidos sendo processados pela aplicação. ClassCastException ClassCastException (erro na conversão forçada de tipo) ArithmeticException (cálculos inválidos, como dividor por zero) NullPointerException, IllegalArgumentException, IndexOutOfBoundsException e SecurityException são exemplos de subclasses de RuntimeException. Principais Exceções Quando usar exceções O tratamento de exceções deve ser utilizado nas seguintes situações: • processar situações excepcionais nas quais um método seja incapaz de terminar sua função por razoes que fogem a seu controle; • processar exceções de componentes que não estão projetados para realizar tais tarefas diretamente; • em projetos de grande porte, para tratar exceções de maneira uniforme em todo o projeto. Throws É a responsável por tratar os possíveis erros que venham a acontecer, porem a clausula throws lista as possíveis exceções que podem ser disparadas tipoDeRetorno nomeDoMetodo() throws TiposDeExcecao1, TipoDeExcecao2, ... { //corpo do metodo } Sempre definida para um método completo de uma classe, logo a qualquer momento dentro desse método pode ocorrer uma exceção é então as classes definidas serão executadas Exemplo public class TestaException { public static void main(String[] args) throws FileNotFoundException { new java.io.FileInputStream("arquivo.txt"); } Exceções não Monitoradas Não exigem tratamento com o uso de diretivas try/catch/finnaly, permitindo seu envio implícito para o contexto superior. Todas as exceções não monitoradas são subclasses de java.lang.RuntimeException Exemplo Exceções Monitoradas É exigido tratamento obrigatório com try/catch/finally ou a declaração explícita de seu lançamento para contexto superior por meio da cláusula thows. Exemplo Tratamento Qualificado de Exceções Qualquer exceção pode ser tratada de modo genérico por meio de um bloco try/catch que apanhe a classe de exceção Exption. Mas o controle de exceções pode ser mais sofisticado com o encadeamento de múltiplos blocos catch. Não Qualificado Qualificado Pesquise e estude Como fazer exceções com herança? Qual a diferença entre throw e throws? O que é um stack trace e um printStackTrace? O que fazem as classes Throwable, Exception e Error? Sites+ http://www.hwn.com.br/pej/ -> Livro Think in Java http://javafree.uol.com.br/index.jf http://www.guj.com.br/ ->tem um dos maiores forum de Java, cadastra-se e debata também