A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Capítulo 15 – Tratamento de Exceções

Apresentações semelhantes


Apresentação em tema: "Capítulo 15 – Tratamento de Exceções"— Transcrição da apresentação:

1 Capítulo 15 – Tratamento de Exceções
Outline Introdução Uma visão geral do tratamento de Exceções Um exemplo do tratamento de exceções: divisão por zero A hierarquia das exceções em Java Disparando novamente uma exceção A cláusula finally Propagação de exceções printStackTrace, getStackTrace e getMessage Exceções encadeadas Declarando novos tipos de exceções

2 Tratamento de exceções
15.1 Introdução Tratamento de exceções Exceção Indicação de um problema durante a execução Exemplo: divisão por zero Exceções encadeadas

3 15.2 Uma visão geral do tratamento de Exceções
Usos do tratamento de exceções Processar exceções dos componentes do programa Tratar as exceções de uma maneira uniforme em projetos grandes Remover o tratamento de exceções do “fluxo principal” de execução Um método detecta um erro em lança uma exceção O código para o tratamento de exceções processa o erro Exceções não capturadas podem fornecer resultados adversos Podem terminar a execução do programa

4 15.2 Uma visão geral do tratamento de Exceções
Código que pode gerar erros deve ser posto em blocos try O código para o tratamento de erros deve ser posto em cláusulas catch A cláusula finally sempre é executada Modelo de terminação no tratamento de exceções O bloco no qual o tratamento da exceção expira A cláusula throws especifica as exceções que um método pode lançar

5 15.3 Um exemplo do tratamento de exceções: divisão por zero
Um erro comum de programação Arremesa (throws) uma ArithmeticException

6 Method quotient throws ArithmeticException
O bloco try Lê os operandos da entrada padrão Tenta a divisão usando o método quociente Catch ArithmeticException

7

8 15.4 A hierarquia das exceções em Java
Superclasse Throwable Subclasse Exception Situações de erro verificadas em tempo de compilação Devem ser capturadas pelo programa Subclasse Error Tipicamente não capturados pelo programa Exceções verificadas (Checked exceptions) É necessário envolvê-las em um bloco try..catch ou usar a cláusula throws na declaração do método Exceções não verificadas (Unchecked exceptions)

9 Fig. 15.2 A hierarquia de classes para a classe Throwable
Exception Error AWTError ThreadDeath IOException RuntimeException OutOfMemoryError

10 15.5 Disparando novamente uma exceção
Torne a lançar a exceção se o bloco catch não pode tratá-la inteiramente

11 15.6 A cláusula finally Perda de recursos O bloco finally
Ocorre quando os recursos alocados (memória, conexões com o banco de dados, etc.) não são liberados por um programa O bloco finally Vem depois dos blocos catch É sempre executado Frequentemente usado para liberar recursos

12 Torna a lançar Exception
O bloco finally executa mesmo que alguma Exception tenha sido lançada

13 O bloco finally é sempre executado

14

15 15.7 Propagação de exceções
Exceções não capturadas no escopo do método onde elas são lançadas O método termina A exceção propaga para o método que chamou o método onde ocorreu a exceção Outra tentativa de capturar a exceção

16 Chama o método lancaExcecoes
Captura as exceções lançadas pelo do método lancaExcecoes O método declara uma cláusula throws Lança uma Exception

17

18 15.8 Os métodos printStackTrace, getStackTrace e getMessage
A classe Throwable Método printStackTrace Imprime a pilha de chamadas de métodos Método getStackTrace Provê acesso programático à pilha impressa por printStackTrace(). Retorna um array contendo os elementos da pilha de chamadas de métodos.

19 Imprime cada um dos StackTraceElements
Chama metodo1 Imprime as informações geradas pelas chamadas a getMessage e printStackTrace Imprime cada um dos StackTraceElements metodo1 declara uma cláusula throw Chama metodo2

20 metodo2 declara uma cláusula throw
chama metodo3 metodo3 declara uma cláusula throw Levanta uma Exception que propaga em direção a main

21

22 Encapsula a exceção existente em uma nova exceção
15.9 Exceções encadeadas Encapsula a exceção existente em uma nova exceção permite manter o histórico dos eventos na pilha

23 Captura Exception e imprime o conteúdo da pilha
Chama metodo1 Captura Exception e imprime o conteúdo da pilha metodo1 declara uma cláusula throw Chama metodo2 Uma Exception existente é encadeada com uma nova exceção

24 metodo2 declara uma cláusula throw
Chama metodo3 Uma exceção existente é encadeada com uma nova exceção Lança uma nova Exception

25

26 15.10 Declarando novas exceções
Basta herdar de uma exceção existente

27

28


Carregar ppt "Capítulo 15 – Tratamento de Exceções"

Apresentações semelhantes


Anúncios Google