Programação e
Laboratório II
Prof. Mateus Raeder
Universidade do Vale do Rio dos Sinos
- São Leopoldo -
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:
public class Calculadora{
private double resultado;
public double dividir (int x, int y){
resultado = x/y;
return resultado;
}
}
– E se y = 0?
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
import java.util.Scanner;
• Criando exceções próprias:
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
import java.util.InputMismatchException;
import java.util.Scanner;
• Criando exceções próprias:
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");
}
}
Programação II – Prof. Mateus Raeder
Download

Prof. Mateus Raeder