Aaaaaaaa
Grupo de Linguagens de Programação - DI/PUC-Rio
Programação Java
Tratamento de Exceções
Grupo de Linguagens de Programação
Departamento de Informática
PUC-Rio
Motivações para Exceções
? Um
método pode detectar uma falha mas não estar apto a resolver sua causa, devendo repassar essa função a quem saiba
? Se introduzirmos o tratamento de falhas ao longo do fluxo normal de código, podemos estar comprometendo muito a inteligibilidade 2
1
Java First-Tier: Aplicações
Grupo de Linguagens de Programação - DI/PUC-Rio
Exceções
? Diz-se
que uma exceção é lançada para sinalizar alguma falha
? O lançamento de uma exceção causa uma interrupção abrupta do trecho de código que a gerou
? O controle da execução volta para o primeiro trecho de código (na pilha de chamadas) apto a tratar a exceção lançada
3
Suporte a Exceções
? As
linguagens OO tipicamente dão suporte ao uso de exceções
? Para usarmos exceções precisamos de:
– uma representação para a exceção
– uma forma de lançar a exceção
– uma forma de tratar a exceção
4
2
Java First-Tier: Aplicações
Grupo de Linguagens de Programação - DI/PUC-Rio
Exceções em Java
? Java
dá suporte ao uso de exceções:
– são representadas por classes
– são lançadas pelo comando throw
– são tratadas pela estrutura try-catch-finally
? De
modo geral, um método que lance uma exceção deve declarar isso explicitamente
? Para uma classe representar uma exceção, ela deve pertencer a uma certa hierarquia
5
Exemplo de Uso
? Considere
a classe:
public class Calc { public int div(int a, int b) { return a/b;
}
}
?O
método div , se for chamado com b igual à zero, dará um erro. Esse erro poderia ser sinalizado através de uma exceção
6
3
Java First-Tier: Aplicações
Grupo de Linguagens de Programação - DI/PUC-Rio
Modelando uma Exceção
? Vamos,
então, modelar uma exceção que indica uma tentativa de divisão