290 likes | 377 Vues
Programação. 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.
E N D
Programação 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.
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, IndexOutOfBoundsExceptione SecurityExceptionsão exemplos de subclasses de RuntimeException.
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
tipoDeRetornonomeDoMetodo() throwsTiposDeExcecao1, 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 publicclassTestaException { public static void main(String[] args) throws FileNotFoundException{ newjava.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
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.
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.
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 forumde Java, cadastra-se e debata também