Programação e Laboratório II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São...

12
Programação e Laboratório II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -

Transcript of Programação e Laboratório II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São...

Page 1: Programação e Laboratório II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -

Programação e Laboratório II

Prof. Mateus Raeder

Universidade do Vale do Rio dos Sinos- São Leopoldo -

Page 2: 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

Page 3: 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• Exemplo:

– E se y = 0?

public class Calculadora{ private double resultado; public double dividir (int x, int y){ resultado = x/y;

return resultado; }}

Page 4: 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• 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; }}

Page 5: 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• 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; }}

Page 6: 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• 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); } }}

Page 7: 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• 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"); } }}

Page 8: 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• 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(); } }}

Page 9: 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• 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 + "]"; }}

Page 10: 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• 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?"); }}

Page 11: 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• 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; }}

Page 12: 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• 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"); }}