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.