Carregar apresentação
A apresentação está carregando. Por favor, espere
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
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
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
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
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
26
15.10 Declarando novas exceções
Basta herdar de uma exceção existente
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.