Programação e Laboratório II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São...
-
Upload
isaque-brezinski-de-figueiredo -
Category
Documents
-
view
216 -
download
0
Transcript of Programação e Laboratório II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São...
Programação e Laboratório II
Prof. Mateus Raeder
Universidade do Vale do Rio dos Sinos- São Leopoldo -
Programação II – Prof. Mateus Raeder
Exceções• Exceções
– Exceções ocorrem quando alguma condição excepcional acontece no decorrer da execução
• Interrompendo a execução do programa
– Tratar as exceções significa gerenciar estes erros
– Quando ocorre alguma situação adversa, um objeto do tipo Exception é lançado
Programação II – Prof. Mateus Raeder
Exceções• Exemplo:
– E se y = 0?
public class Calculadora{ private double resultado; public double dividir (int x, int y){ resultado = x/y;
return resultado; }}
Programação II – Prof. Mateus Raeder
Exceções• Exemplo:public class Calculadora{ private double resultado; public double dividir (int x, int y){ try{ resultado = x/y; }catch(ArithmeticException e){ System.out.println("ERRO: divisão por 0");
} System.out.println("Linha após a exceção");
return resultado; }}
Programação II – Prof. Mateus Raeder
Exceções• Mais de uma exceção:public class Calculadora{ private double resultado; public double dividir (int x, int y){ try{ resultado = x/y; }catch(ArithmeticException e){ System.out.println("ERRO: divisão por 0"); e.printStackTrace(); }catch(Exception e){ System.out.println("ERRO!"); e.printStackTrace(); } System.out.println("Linha após a exceção"); return resultado; }}
Programação II – Prof. Mateus Raeder
Exceções• Mais de uma exceção:public class Array { public void inicializaArray(int a, int b){ try{ int[] array = new int[10]; array[2] = a/b; array[23] = 7; }catch(ArithmeticException ae){ System.out.println("ERRO ARITMÉTICO: "+ae); }catch(ArrayIndexOutOfBoundsException oe){ System.out.println("ÍNDICE INVÁLIDO: "+oe); } }}
Programação II – Prof. Mateus Raeder
Exceções• Mais de uma exceção:public class Array { public void inicializaArray(int a, int b){ try{ int[] array = new int[10]; array[2] = a/b; array[23] = 7; }catch(ArithmeticException ae){ System.out.println("ERRO ARITMÉTICO: "+ae); }catch(ArrayIndexOutOfBoundsException oe){ System.out.println("ÍNDICE INVÁLIDO: "+oe); }finally{ System.out.println(“Trecho executado sempre"); } }}
Programação II – Prof. Mateus Raeder
Exceções• Mais um exemplo:import java.util.Scanner;
public class TesteExcecao { public static void main(String args[]){ try{ Scanner s = new Scanner(System.in); int teste = Integer.parseInt(s.next()); System.out.println(teste); }catch(Exception e){ e.printStackTrace(); } }}
Programação II – Prof. Mateus Raeder
Exceções• Criando exceções próprias:
public class MinhaExcecao extends Exception { private String mensagem; public MinhaExcecao(String mensagem){ this.mensagem = mensagem; } public String toString() { return "MinhaExcecao [" + mensagem + "]"; }}
Programação II – Prof. Mateus Raeder
Exceções• Criando exceções próprias:
import java.util.Scanner;
public class TesteExcecao { public static void main(String args[]){ try{ Scanner s = new Scanner(System.in); System.out.print("Digite o tamanho do array: "); int[] meuArray = new int[s.nextInt()]; System.out.print("Digite a posição do array que deseja acessar: "); int posicao = s.nextInt(); System.out.print("Digite o valor que deseja inserir: "); int valor = s.nextInt(); meuArray[posicao] = valor; if(valor >= 1000){ MinhaExcecao me = new MinhaExcecao("Valor inválido"); throw me; } System.out.println("Valor da posição: "+meuArray[posicao]); }catch(MinhaExcecao me){ System.out.println(me.toString()); }catch(ArrayIndexOutOfBoundsException oe){ oe.printStackTrace(); } System.out.println("Esta linha é impressa sempre?"); }}
Programação II – Prof. Mateus Raeder
Exceções• Criando exceções próprias:
– Método que lança exceção:public class ExcecaoMetodo { public int meuMetodoComExcecao(int a) throws MinhaExcecao{ if(a % 2 == 0) throw new MinhaExcecao("Número é par!"); return a; }}
Programação II – Prof. Mateus Raeder
Exceções• Criando exceções próprias:
import java.util.InputMismatchException;import java.util.Scanner;
public class MainExcecaoMetodo { public static void main(String args[]){ boolean correto = false; ExcecaoMetodo em = new ExcecaoMetodo(); try{ Scanner s = new Scanner(System.in); System.out.print("Digite um número ímpar: "); em.meuMetodoComExcecao(s.nextInt()); correto = true; }catch(MinhaExcecao me){ System.out.println(me.toString()); }catch(InputMismatchException ie){ ie.printStackTrace(); } if(!correto) System.out.println("Não deu certo... =("); else System.out.println("Certo... =D"); }}