Sei sulla pagina 1di 28

Tratamento de Excees

Uma exceo um erro previsto, geralmente causado por fatores externos, que fogem ao controle do programador.

Tratamento de Excees

Estas excees podem ocorrer por diversos motivos. Alguns exemplos Ao conectar com o banco de dados Ao salvar um arquivo Ao imprimir Utilizar um ndice inexistente em um vetor Uma diviso por zero Caso ocorra uma exceo, no tratada, o programa abortado.
2

Tratamento de Excees

Atravs do tratamento de excees, podemos escrever programas tolerantes a falhas.


O tratamento de excees permite a um programa capturar todos os tipos de excees tornando o programa mais robusto.

Tratamento de Excees

Estas excees podem ocorrer por diversos motivos. Alguns exemplos Ao conectar com o banco de dados Ao salvar um arquivo Ao imprimir Utilizar um ndice inexistente em um vetor Uma diviso por zero Caso ocorra uma exceo, no tratada, o programa abortado.
4

Utilizando try/catch

Para tratarmos as excees, utilizamos o bloco try..catch Veja o exemplo abaixo, sem tratamento de exceo.

package tratamentoerro; import javax.swing.JOptionPane; public class Main { public static void main(String[] args) { int v1=0,v2=0,resultado; resultado=v1/v2; JOptionPane.showMessageDialog(null, resultado);}}
5

Utilizando try/catch

Ao executarmos esta classe vai dar o seguinte erro

Exception in thread "main" java.lang.ArithmeticException: / by zero at tratamentoerro.Main.main(Main.java:11) Java Result: 1


6

Adicionando o bloco do try catch


package tratamentoerro; import javax.swing.JOptionPane; public class Main { public static void main(String[] args) { int v1=10,v2=0,resultado = 0; try{ resultado=v1/v2; }catch(Exception e){ JOptionPane.showMessageDialog(null, resultado);}}}

Obtendo detalhes sobre a exceo

Atravs do mtodo getMessage( ) da classe Exception, podemos obter maiores detalhes sobre o erro ocorrido.
package tratamentoerro; import javax.swing.JOptionPane; public class Main { public static void main(String[] args) { int v1=10,v2=0,resultado = 0; try{ resultado=v1/v2; }catch(Exception e){ JOptionPane.showMessageDialog(null,e.getMessage());} JOptionPane.showMessageDialog(null,resultado);}}

Utilizando finally

Se voc adicionar um bloco finally, e houver alguma instruo neste bloco, esta instruo sempre ser executadas detalhes sobre o erro ocorrido.
package tratamentoerro; import javax.swing.JOptionPane; public class Main { public static void main(String[] args) { int v1=10,v2=0,resultado = 0; try{ resultado=v1/v2; }catch(Exception e){ JOptionPane.showMessageDialog(null,e.getMessage());} JOptionPane.showMessageDialog(null,resultado);}}

Utilizando finally

Se voc adicionar um bloco finally, e houver alguma instruo neste bloco, esta instruo sempre ser executadas detalhes sobre o erro ocorrido.

package tratamentoerro; import javax.swing.JOptionPane; public class Main { public static void main(String[] args) { int v1=10,v2=0,resultado = 0; try{ resultado=v1/v2; }catch(Exception e){ JOptionPane.showMessageDialog(null,e.getMessage());} finally{ } JOptionPane.showMessageDialog(null,resultado);}}
10

Excees Comuns

A linguagem Java fornece vrias excees predefinidas. Entres estas excees pode-se destacar: ArithmeticException normalmente, o resultado de uma operao de diviso de inteiros por zero NullPointerException uma tentativade acessar um objeto ou mtodo antes do prprio ser instanciado(ou criado)
11

Excees Comuns
ArrayIndexOutOfBoundsException uma tentativa de acessar um elemento de um vetor alm da definio original do tamanho do vetor NegativeArraySizeException uma tentativa de criar um vetor com dimenso negativa NumberFormatException incompatibilidade de tipos

12

Excees Comuns
IOException excees para operaes de Entrada(Input) e

Sada(Output). Ex. acessar arquivos ou dispositivos de entrada e sada.


FileNotFoundException arquivo no encontrado Exception, classe base exceo(generalizara exceo) raiz de todas as excees;
13

Tratando vrias excees em um bloco

Pode ocorrer em um programa, para cada instruo um tipo de exceo diferente

14

package excecao; import javax.swing.JOptionPane; public class Main { public static void main(String[] args) { int a=100; int []b={0,2,4,6,8};

15

try{ JOptionPane.showMessageDialog(null,a/b[0]); }catch(ArithmeticException e){ JOptionPane.showMessageDialog(null,"ERRO DE OPERAO ARITMTICA"); }try{ JOptionPane.showMessageDialog(null,b[10]); }catch(ArrayIndexOutOfBoundsException e){ JOptionPane.showMessageDialog(null,"INDECE IVLIDO NO VETOR"); }catch(Exception e){JOptionPane.showMessageDialog(null,"QUAL QER ERRO NO PREVISTO ACIMA"); }finally{ JOptionPane.showMessageDialog(null,"SEMPRE PASSA POR AQUI");}}}
16

Classe

Considere um programa para um banco, e bem fcil perceber que uma entidade extremamente importante para o nosso sistema e a conta. Nossa idia aqui e generalizarmos alguma informao, juntamente com funcionalidades que toda conta deve ter.

17

Classe

O que toda conta tem importante para nos? numero da conta nome do cliente saldo limite

18

classe

O que toda conta faz importante para nos? Isto , o que gostaramos de pedir aconta. saca uma quantidade x deposita uma quantidade x imprime o nome do dono da conta devolve o saldo atual transfere uma quantidade x para uma outra conta y devolve o tipo de conta

19

Uma classe em Java


Vamos comear apenas com o que uma Conta tem, e no com o que ela faz.

class Conta { int numero; String nome; double saldo; double limite; }
20

Criando e usando um objeto

Para criar (construir, instanciar) uma Conta, basta usar a palavra chave new, utilizamos tambm o parnteses, que descobriremos o que exatamente ele em um capitulo posterior:

public static void main(String[] args) { conta minhaconta=new conta(); }

21

Atravs da varivel minhaConta agora podemos acessar o objeto recm criado para alterar seu nome, seu saldo etc:

public static void main(String[] args) { conta minhaconta= new conta(); minhaconta.nome="Duke"; minhaconta.saldo=1000.0; JOptionPane.showMessageDialog(null,minhaconta. saldo);}
22

Mtodos

Os comportamentos que cada classe tem, isto , o que ela faz. Por exemplo, de que maneira que uma Conta deposita dinheiro? Iremos especificar isso dentro da prpria classe Conta, e no em um local desatrelado das informaes da prpria Conta. por isso que essas funes so chamadas de mtodo pois e a maneira de fazer uma operao com um objeto. Queremos criar um mtodo que deposita uma determinada quantidade e no retorna nenhuma informao para quem acionar esse mtodo:

23

Mtodos
void deposita(double quantidade){ double novosaldo; novosaldo=saldo+quantidade; saldo=novosaldo; }

24

Mtodos
void deposita(double quantidade){ double novosaldo; novosaldo=saldo+quantidade; saldo=novosaldo; }

25

Mtodo Saldo
void saldo( ){ System.out.println("Este o seu saldo"+saldo); }

26

Invocando mtodos
public static void main(String[] args) { Scanner ler=new Scanner(System.in); conta minhaconta=new conta(); String c; int opcao; do{ System.out.println("1-Consultar Saldo"); System.out.println("2-Depositar"); System.out.println("Digite a sua OPCO "); opcao=ler.nextInt(); switch(opcao) {

27

Invocando mtodos
case 1:System.out.println("Este o seu saldo"+minhaconta.saldo); break; case 2: double valordepositado; System.out.println("Quanto deseja depositar?"); valordepositado=ler.nextDouble(); minhaconta.deposita(valordepositado); break; default: System.out.println("valor invlido"); } System.out.println("deseja continuar S/N "); c=ler.next(); } while(c.equals("s")||c.equals("S")); }

28

Potrebbero piacerti anche