Exceções Exemplo: fatorial Exemplo: fatorial Exemplo: fatorial

Propaganda
11/17/09
Como tratar funções parciais?
Programação I
Cap. 9 – Tratamento de exeção
Christiano Braga
[email protected]
1
• Uma função parcial é aquela que não está definida
para todos os elementos do seu domínio.
• Como implementar tais funções?
• Restringir a implementação aos valores de parâmetros
apropriados é trivial. (Um condicional resolve a
questão.)
• Fica a pergunta sobre como tratar o retorno da
função.
• O que a função deve retornar no caso excepcional,
isto é, quando a função receber como parâmetro um
valor fora do seu domínio?
2
Exceções
Exemplo: fatorial
• Java têm uma resposta bastante elegante para esta
situação: sinaliza-se uma exceção.
• Sinalizar uma exceção é como produzir um erro.
• Uma exceção, no entanto, não necessariamente
será interceptada pela função chamadora. Ela pode
ser interceptada por uma função mais “acima” na
sequência de chamadas de chamadas de função de
uma aplicação ou simplesmente não ser
interceptada.
import java.io.Console ;
class ExemploExcecoes {
public static int fat(int n) throws Exception {
if(n >= 0)
if (n == 0) return 1 ;
else return n * fat(n -1) ;
else throw
new Exception("\nFat: Parâmetro deve ser um número natural. "+
"Foi passado "+n+".\n") ;
}
public static void main(String[] args) throws Exception {
Console c = System.console() ;
String value = c.readLine("Digite um numero: ");
System.out.println("O fatorial de "+value+" é"+
fat(Integer.parseInt(value))) ;
}
3
}
4
Exemplo: fatorial
Exemplo: fatorial
• No exemplo, a função fatorial sinaliza uma
exceção quando o parâmetro passado não é
um número natural.
• O procedimento main simplesmente “deixa
rolar” a exceção, não tratando-a. Quando a
situação excepcional ocorre a exceção é
capturada pela máquina virtual Java que
termina o programa e exibe a pilha de
chamadas na tela.
$ java6 ExemploExcecoes
Digite um numero: -1
Exception in thread "main" java.lang.Exception:
Fat: Parâmetro deve ser um número natural. Foi passado -1.
at ExemploExcecoes.fat(ExemploExcecoes.java:9)
at ExemploExcecoes.main(ExemploExcecoes.java:17)
5
6
1
Download