Prévia do material em texto
Tratamento de Exceçoes
● Hierarquia das Exceções em Java
● Bloco Finaly
● Liberando a pilha e obtendo informações de
objetos de exceção
● Exceções encadeadas
● Todas as classes de Exceção do java herdam
direta ou indiretamente da classe Exception
● A figura mostra uma pequena parte da
hierarquia de herança da classe Throwable
(uma subclasse de object), que é a superclasse
da classe Exception
● Exception: representam situações
excepcionais que podem ocorrer em um
programa java e que podem ser capturadas
pelo aplicativo.
● Error: representam situação anormais que
acontecem na JVM. (Geralmente os aplicativos
não podem se recuperar dos erros).
Hierarquia das Exceções em Java
● Exception: representam situações
excepcionais que podem ocorrer em um
programa java e que podem ser capturadas
pelo aplicativo.
● Error: representam situação anormais que
acontecem na JVM. (Geralmente os aplicativos
não podem se recuperar dos erros).
● Você pode visualizar a documentação Throwable
em:
docs.oracle.com/javase/7/docs/api/java/lang/Throwable.html
Exceções verificadas x Exceções
não verificadas
Exceções não verificadas
RuntimeExceptions são exceções não
verificadas,todos os tipos de exceção que são
subclasses diretas ou indiretas da classe
RuntimeException (pacote java.lang) são
exceções não verificadas. Elas geralmente são
causadas por defeitos no código do seu
programa.
Exceções verificadas x Exceções
não verificadas
Exceções verificadas
● Todas as classes que são herdadas da classe
Exception, mas não direta ou indiretamente da
classe RuntimeException, são consideradas
exceções verificadas. Essas exceções
geralmente são causadas por condições que
não estão sob o controle do programa
Bloco finally
Programas que obtêm certos recursos devem
retorná-los ao sistema para evitar os assim
chamados vazamentos de recurso.
Bloco finally
Em linguagens de programação como C e C++, o tipo mais
comum de vazamento de recurso é um vazamento de memória.
O Java realiza coleta automática de lixo de memória não mais
utilizada por programas, evitando assim a maioria dos vazamentos
de memória. Entretanto, outros tipos de vazamentos de recurso
podem ocorrer. Por exemplo, arquivos, conexões de banco de
dados e conexões de rede que não são fechadas adequadamente
depois que não são mais necessárias talvez não estejam
disponíveis para uso em outros programas.
Bloco finally
O bloco finally (que consiste na palavra-chave
finally, seguida pelo código entre chaves), às
vezes referido como a cláusula finally, é
opcional. Se estiver presente, ele é colocado
depois do último bloco catch. Se não houver
blocos catch, o bloco finally, se presente, segue
imediatamente o bloco try.
Bloco finally
● O bloco finally sempre será executado, caso a
exceção seja executada ou não.
● O caso em que o bloco finally não executará é
se o aplicativo sair precocemente do bloco try
chamando o método System.exit.
Bloco finally
Bloco finally
Lançando exceções com a
instrução throw
● A instrução na linha 26 é conhecida como
uma instrução throw ela é executada para
indicar uma exceção que ocorreu.
● Você mesmo pode lançar exceções usando
a instrução throw.
Uma instrução throw especifica um objeto a
ser lançado. O operando de um
throw pode ser de qualquer classe derivada
da classe Throwable.
Relançando exceções com a
instrução throw
● O relançamento da exceção é visto na linha 32
Resumindo
● Um método deve informar que exceções ele pode disparar (throw) cláusula
throws na definição do método
● Um bloco que tenta (try) chamar um método que pode disparar uma exceção
deve tratá-la
● Chamada normal de um método, mas que deve estar em um bloco try{...}
catch {...}
● Uma exceção é um objeto que deve ser capturado (catch) É nesse bloco que
a exceção deve ser tratada
● Um trecho de código pode ser executado sempre
bloco finally
Liberando a pilha e obtendo informações de um objeto de
Exceção
Liberando a pilha e obtendo informações de um objeto de
Exceção
Exceções Encadeadas
Exceções Encadeadas
Exercícios de revisão
1) Por que as exceções são particularmente adequadas para lidar com erros produzidos por
métodos de classes na Java API?
2) O que é um “vazamento de recurso”?
3) Se nenhuma exceção é lançada em um bloco try, onde o controle prossegue quando o
bloco try completa a execução?
4) Dê uma vantagem fundamental de utilizar catch(Exception nomeDaExceção).
5) Um aplicativo convencional deve capturar objetos Error? Explique.
6) O que acontece se nenhuma rotina de tratamento catch corresponder ao tipo de um objeto
lançado?
7) O que acontece se vários blocos catch correspondem ao tipo do objeto lançado?
8) Por que um programador especificaria um tipo de superclasse como o tipo em um bloco
catch?
9) Qual é a razão chave para utilizar blocos finally?
10)O que acontece quando um bloco catch lança uma Exception?
11) O que a instrução throw referênciaDaExceção faz em um bloco catch?
12) O que acontece com uma referência local em um bloco try quando esse bloco lança uma
Exception?
Exercício
Exercício
Exercício
Slide 1
Slide 2
Slide 3
Slide 4
Slide 5
Slide 6
Slide 7
Slide 8
Slide 9
Slide 10
Slide 11
Slide 12
Slide 13
Slide 14
Slide 15
Slide 16
Slide 17
Slide 18
Slide 19
Slide 20
Slide 21
Slide 22
Slide 23
Slide 24
Slide 25