Você está na página 1de 16

Tratamento de Exceção

Faculdade Estácio de Alagoas


Curso: Sistemas de informação
Disciplina: Linguagem de Programação
Aula 11 Professor: Márcio Robério – mrcferro@gmail.com
2013
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

try
catch
Palavras utilizadas
no tratamento de finally
exceções:
throw
throws
Uma exceção em Java é...

Um objeto!
Classes de tratamento de exceções

Fonte: DEITEL, 2005, pg. 478


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 roberio@live.estacio.br
Referências / sugestão de material para leitura

• H. DEITEL/P.J . Java: Como Programar. 6ª Ed.

• C. CAMARÃO, L. FIGUEIREDO. Programação de Computadores em Java. Editora LTC, 2003

Você também pode gostar