Aula 7 - Colégio Agrícola de Frederico Westphalen

Propaganda
Programação Orientada a Objetos
(DPADF 0063)
Aula 7 – Tratamento de Exceções
Universidade Federal de Santa Maria
Colégio Agrícola de Frederico Westphalen
Curso Superior de Tecnologia em Sistemas para Internet
Prof. Bruno B. Boniati – www.cafw.ufsm.br/~bruno
Exceptions
Exeptions
• Uma exceção é um evento, normalmente associado a
um erro, e que ao ser disparado interrompe o fluxo
normal de execução da aplicação.
• Exceções ocorrem durante a execução de aplicativos,
como por exemplo divisões por zero, acesso a
posições inválidas (em listas ou arrays).
• Como o próprio nome indica ... exceções são situações
que não ocorrem com frequência.
Exeptions (cont.)
• Erros são comuns em tempo de execução e as aplicações
devem estar preparadas para tratá-los sem abortar o programa
e perder os dados dos usuários.
• Tratar os erros é uma tarefa que demanda bastante
codificação, tornando muitas vezes o código difícil de entender;
• O conceito de tratamento de exceções permite ao programador
“lidar” com o problema (tratando-o) e permitindo ao programa
continuar sua execução.
• Exceções habilitam programadores a escrever códigos
robustos e tolerantes a falhas.
Vantagens do uso de exceções
• Separação do código regular (fluxo normal) do código de
tratamento de exceções;
• Propagação de erros através dos métodos da pilha de
chamadas (método 1, chama o método 2, que chama o método 3 ...
somente um deles precisa se preocupar em tratar os erros);
• Agrupamento e diferenciação de erros (e seus respectivos
tratamentos);
• Obrigatoriedade de tratamento (exceções não podem ser
ignoradas);
Exceções ... exemplos
• A classe abaixo possui um método chamado “dividir” que
devolve a divisão de um número por seu numerador.
O que aconteceria se o
usuário informar o valor 0
(zero) para o denominador?
E se ele digitar “um” ao invés de 1?
Tratamento de
Exceções ...
Observe o tratamento ..
try {
//Código a ser exec.
} catch (Erro1 e1) {
//Código se ocorrer o erro 1
} catch (Erro2 e2) {
//Código se ocorrer o erro 2
} finally {
//Finalização ...
//Código que será executado se
//ocorrerem ou não erros
}
Tratamento de Exceções
• Bloco try
▫ Delimita o bloco de código que pode originar exceções;
• Bloco catch
▫ Bloco que define como determinada exceção deve ser tratada (o que deve
acontecer se ela ocorrer);
▫ Não é necessário que todas as exceções possíveis sejam tratadas (podese utilizar uma superclasse de exceção para agrupar tratamentos ou
propagá-la para outro tratador);
• Bloco finally
▫ Contém o código responsável pela finalização (fechamento de arquivos,
liberação de recursos);
▫ É uma extensão do try, será executado havendo ou não erros.
Propagando exceções
• Nem sempre uma exceção é tratada localmente (ou seja,
no local onde o erro pode acontecer) ... Uma exceção
pode ser propagada ...
• Propagar uma exceção significa avisar o código que irá
chamar o método onde o erro pode ocorrer que ele é um
código que merece tratamento (que é propenso a uma
determinada exceção).
• Uma exceção é propagada através do comando throws
Propagando exceções (cont.)
• Porque o código abaixo não compila?
Algumas
construções do
código exigem
determinadas
exceções
sejam tratadas
ou então
propagadas.
unreported exception java.io.FileNotFoundException;
must be caught or declared to be thrown
Hierarquia de exceções em Java
• A superclasse de toda exceção é a classe Throwable;
• Somente objetos filhos de Throwable podem ser tratados
(try/catch/finally)
• Throwable se divide em
▫ Error – representando situações anormais da JVM e de difícil
recuperação;
▫ Exception – representando situações anormais do programa e
que podem ser capturadas e tratadas. Podem ser:
 Verificadas (checked) quando são geradas por situações não controladas pelo
programa (um arquivo que não existe, por exemplo). Seu tratamento pode ser
exigido pelo compilador.
 Não Verificadas (unchecked) geralmente causadas por deficiências no código.
Hierarquia de exceções em Java (cont.)
Levantando exceções
• A hierarquia de classes de exceções pode ser
estendida de forma a criar novos tipos de exceções.
• Levantar uma exceção significa indicar que um erro
ocorreu e precisa de tratamento
• Uma exceção é lançada através do comando throw
Levantando exceções (cont.)
• Nova exceção ...
• Levantando (criando) a nova exceção ..
Resumindo ...
• Exceções são um tipo especial de classe que a
linguagem orientada a objetos oferece um tratamento
diferenciado ...
• Em Java exceções ...
▫
▫
▫
▫
são representadas por classes
são lançadas pelo comando throw
são tratadas pela estrutura try-catch-finally
podem ser verificadas pelo compilador ou não;
Exercícios para fixação
Erros, avisos e informações ...
• Codifique três classes para representar possíveis exceções: erros
(errors), avisos (warnings) e informações (informations).
• Cada classe de exceção deve conter um método construtor que
recebe a mensagem a ser produzida e a concatena com uma das
palavras: ERRO, AVISO e INFORMAÇÃO.
• Faça uma aplicação para lançar os erros
produzidos e faça um tratamento para cada
uma das exceções utilizando os métodos da
classe JOptionPane (ex. showMessageDialog)
para apresentar as mensagens decorrentes
das exceções com seus respectivos ícones.
Download