Tratamento de Exceção (em Java) - lncc.brrogerio/lingprog/11-TratamentoExcecao/AULA11a.pdf · O...
Transcript of Tratamento de Exceção (em Java) - lncc.brrogerio/lingprog/11-TratamentoExcecao/AULA11a.pdf · O...
Faculdade Estácio de Alagoas Curso: Sistemas de informação
Disciplina: Linguagem de Programação Professor: Márcio Robério – [email protected]
2013
Tratamento de Exceção
Aula 11
O que é uma exceção?
Indicação de um problema que ocorre durante a execução de um programa (DEITEL, 2005).
Alguns problemas que geram exceções
• Pelo usuário: – Divisão por zero
– Caracteres inválidos
• Pelo código: – Senha de acesso ao banco de dados errada
– Tentativa de abrir um arquivo inexistente
– Manipulação de variável com valor null (sem objeto)
Tratamento de Exceções
• Mecanismo de identificar e tratar uma exceção
• Permite que o programa continue executando
• Favorece o desenvolvimento de aplicativos tolerante a falhas
Tratamento de Exceção em Java
Palavras utilizadas no tratamento de exceções:
throws
throw
finally
catch
try
Classes de tratamento de exceções
• Throwable: classe base de todas as exceções. Fornece os métodos: – getMessage() – retorna mensagem do erro – printStackTrace() – retorna a pilha de métodos
chamados – toString - retorna uma string com a descrição da
descrição
• Exception: – subclasse de Thworable; – por convenção, todas as classes de exceção são
subclasses de Exception
Como tratar uma exceção
try {
trecho do código que pode gerar exceção
} catch (ClasseExceção1 objeto) {
tratamento da exceção 1
} catch (ClasseExceção2 objeto){
tratamento da exceção 2
} finnaly {
trecho que será executado sempre (opcional)
obs.: será chamado mesmo que no try exista o comando
“return”.
}
Métodos que lançam exceções
• Métodos podem definir exceções que podem gerar (disparar)
• O comando throw “dispara” a exceção
• O comando throws é colocado no método, seguido dos tipos de exceções que pode disparar
• O trecho do código que chamou o método deve tratar a exceção
Exemplo 01 programa sem tratamento de exceção
public class Teste01 {
public static void main(String[] args) {
int a, b, divisao, resto;
String entrada;
entrada = JOptionPane.showInputDialog("Informe um número inteiro");
a = Integer.parseInt(entrada);
entrada = JOptionPane.showInputDialog("Informe outro número inteiro");
b = Integer.parseInt(entrada);
divisao = a / b;
resto = a % b;
JOptionPane.showMessageDialog(null, "a/b = " + divisao);
JOptionPane.showMessageDialog(null, "a%b = " + resto);
}
}
Exemplo 01 ao executar o programa o usuário informa...
a=2; b=0. Erro: Exception in thread "main" java.lang.ArithmeticException: / by zero at Teste01.main(Teste01.java:13)
a=10; b=2.3. Erro: Exception in thread "main" java.lang.NumberFormatException: For input string: "2.3" at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48) at java.lang.Integer.parseInt(Integer.java:456) at java.lang.Integer.parseInt(Integer.java:497) at Teste01.main(Teste01.java:11)
Será que poderá ocorrer mais problemas?
Exemplo 02 programa sem tratamento de exceção
public class Teste02 {
public static void main(String args[]){
String nomes[] = new String[2]; // tamanho = 2
nomes[0] = "José";
nomes[1] = "Maria";
int indice;
String entrada = JOptionPane.showInputDialog(“Informe o indice”);
indice = Integer.parseInt(entrada);
System.out.println(nomes[indice]);
}
}
Qual o problema agora?
Exemplo 02 saída:
Saída:
José
Maria
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2
at Teste02.main(Teste02.java:8)
Atividades
Criar uma calculadora:
– Operações: • Soma
• Subtração
• Multiplicação
• Divisão
– Tratamento de exceção: • Entrada de dados
– Obs.: Não pode dar nenhum erro sem tratamento de exceção!
– Prazo : 20/05/2013 Enviar para [email protected]