Buscar

Cap9 - Tratamento de Excecoes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 11 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 11 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 11 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Isaias Camilo Boratti
9. Tratamento de Exceções
Exceção : Consiste em um evento que ocorre quando, durante a execução de 
um aplicativo, é solicitada a execução de uma ação que a máquina não 
consegue realizar.
Exceção --> erro de execução
Exemplos:
- Divisão por zero;
- Encontrar o valor numérico de um string que não representa um valor;
- Em um array, acessar um elemento fora da faixa;
- Solicitar execução de um método para um objeto cuja referência vale null;
- Memória insuficiente;
- Abrir um arquivo que não existe no local especificado;
Isaias Camilo Boratti
- Sempre que ocorre uma exceção, Java cria automaticamente um objeto 
que representa a exceção.
- Ao ocorrer uma exceção, o objeto que representa a exceção verifica se 
não existe algum código definido pelo projetista que deve ser executado para 
o tratamento da exceção. Caso não exista, o programa será automaticamente 
abortado.
Exemplo:
.................
int a=10;
int b, c;
String s = JOptionPane.showInputDialog(“ Digite um valor” );
b = Integer.parseInt(s); // possível erro !!
c = a/b; // possível erro
Isaias Camilo Boratti
......................
int a = 10;
int b,c;
try {
String s = JOptionPane.showInputDialog(“Digite um valor” );
b = Integer.parseInt(s);
c = a/b;
}
catch (Exception e)
{
System.out.println(“Ocorreu algum erro” );
}
................... 
.......................
int a = 10;
int b, c;
try {
String s = JOptionPane.showInputDialog(“ Digite um valor”);
b = Integer.parseInt(s);
c = a / b;
}
catch (NumberFormatException nfe)
{
System.out.println(“ Foi digitado valor inválido” );
}
catch (DivideByZeroException d)
{
System.out.println(“ Ocorreu divisão por zero” );
}
.........................
Bloco try
try { /* coloque aqui o código que a máquina tentará executar e que
poderá causar alguma erro - exceção */
}
catch ( ClasseExcecao1 e1)
{ /* coloque aqui as instruções que serão executadas caso ocorra
uma exceção da classe ClasseExcecao1 */
}
catch (ClasseExcecao2 e2)
{ /* coloque aqui as instruções que serão executadas caso ocorra
uma exceção da classe ClasseExcecao2 */
}
..............................
finally { /* bloco opcional. Só é obrigatório se não for colocado nenhum
catch. Estas instruções serão executadas ocorrendo ou não
uma exceção */
} 
Algumas classes de exceção (java.lang)
Exception ( Superclasse) 
RuntimeException
ArithmeticException
DivideByZeroException (Divisão por zero)
IndexOutOfBoundsException
ArrayIndexOutOfBoundsException (índice array fora da faixa)
StringIndexOutBoundsException (índice string fora do intervalo)
NegativeArraySizeException (tamanho negativo do array)
NullPointerException (uso de um objeto cuja referência vale null) 
IllegalArgumentException
NumberFormatException (valor não está no formato adequado) 
SecurityException (acessar dados de um arquivo não permitido)
IOException
EOFException (tentar ler após fim de arquivo)
FileNotFoundException (arquivo não encontrado) 
Propagação de exceções (throws)
Caso no corpo de um método existam instruções que podem gerar 
exceções e o projetista não deseje tratar no próprio método, é possível fazer 
com que estas exceções sejam deixadas para serem tratadas por quem ativou 
o método.
Exemplo:
import javax.swing.*;
public class Interfaces
{ public int leInteiro() throws NumberFormatException
{ 
/* Na execução deste método, caso ocorra uma exceção da classe
NumberFormatException e este método não tratá-la, a exceção será
propagada (throws) para quem ativar o método */
String s = JOptionPane.showInputDialog(“Digite um valor inteiro”); 
return Integer.parseInt(s);
}
}
Isaias Camilo Boratti
public class Principal
{
public static void main (String arg[])
{
int i;
Interface umaI = new Interface();
try {
i = umaI.leInteiro();
}
catch (NumberFormatException e)
{
i = -1;
} 
...............................
}
} 
Uma exceção também pode ser parcialmente tratada e após propagada.
public int leInteiro() throws NumberFormatException, NullPointerException
{
try {
String s=JOptionPane.showInputDialog(“Digite um valor”);
int i = s.length(); // possível exceção
return Integer.parseInt(s);
}
catch (NumberFormatException e)
{JOptionPane.showMessageDialog(null, “valor digitado não número”);
throw e; // propaga exceção
}
/* Caso ocorra uma exceção da classe NumberFormatException esta 
será tratada parcialmente e após propagada.. Só é possível uma instrução 
throw se a exceção que a instrução especifica é de uma classe compatível com 
a especificada na cláusula throws. Se ocorrer um exceção da classe 
NullPointerException esta será propagada para quem ativou o método. */
Isaias Camilo Boratti
import javax.swing.*;
public class Interface
{ public void escreve( String m)
{ 
System.out.println(m); 
}
public int leInteiroPositivo()
{ 
/* Este método exige do usuário um inteiro positivo. Caso o usuário 
desista da entrada de dados será devolvido –1 */ 
boolean valido = false; 
int valor;
String s;
Isaias Camilo Boratti
while (!valido) 
{ valido = true;
s = JOptionPane.showInputDialog(“Digite int. positivo”);
if (! (s==null) )
try { valor = Integer.parseInt(s);
if (valor > 0 ) return valor;
else { JOptionPane.showMessageDialog(null, “ valor < 0 “);
valido = false; }
}
catch (Exception e)
{ valido = false;
JOptionPane.showMessageDialog(null, “ valor não inteiro”);
}
} // fim bloco while
return –1;
}}

Outros materiais