Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
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
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
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
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
class Conta { int numero; String nome; double saldo; double limite; }
20
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:
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