Você está na página 1de 9

Java – Introdução à POO

EXCEPÇÕES
• Em programação temos 2 tipos de erros: execução e
compilação
• Os erros de compilação dizem respeito à sintaxe e são
detectados durante a compilação.
• Os erros de execução ocorrem quando, durante a execução,
surge uma situação inesperada, como divisão por zero,
invocar um índice inexistente no array, acessar um ficheiro
que não existe, etc.
• O tratamento de erros é realizado nos erros de execução,
onde o programador faz o uso da classe Exception para
controlar o erros, imprimindo mensagens personalizadas ou
mesmo codificadas
Java – Introdução à POO
EXCEPÇÕES

• Para tratar as excepções usamos as classes (exceptions):

• ArithmeticException (Causado por erros derivados de operações


aritméticas, como: divisão por zero)
• ArrayIndexOutOfBoundsException (índice errado do array)
• FileNotFoundException (ficheiro não encontrado)
• IOException (erro ligado ao acesso a ficheiros)

As restantes excepções estão disponíveis em:


https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html
Java – Introdução à POO
COMO CRIAR EXCEPÇÕES

Para tratar as excepções usamos bloco try ... Catch onde no


try é onde o bloco de instruções protegidas do programa e no
catch é onde fazemos o tratamento de erros:

try {
// Protected code
} catch (ExceptionName e1) {
// Catch block
}
Java – Introdução à POO
COMO CRIAR EXCEPÇÕES
Exemplo 1
public class Teste1 {
public static void main(String args[]) {
try {
int a[] = new int[2];
System.out.println("Elemento 3 do array :" + a[3]);

}catch(ArrayIndexOutOfBoundsException e) {
System.out.println("Erro do tipo array :" + e);
}

}
}
Neste programa o bloco protegido contém um erro onde o índice do array é
invalido. Como o erro já havia sido previsto no bloco catch, a mensagem abaixo
será acionada durante a execução:

Erro do tipo array :java.lang.ArrayIndexOutOfBoundsException:


Java – Introdução à POO
COMO CRIAR EXCEPÇÕES
Contudo, Podemos tratar vários erros no mesmo programa, culminando
com vários blocos catch para o mesmo try.
Veja o programa no próximo slide:

try {
// Protected code
} catch (ExceptionType1 e1) {
// Catch block
} catch (ExceptionType2 e2) {
// Catch block
} catch (ExceptionType3 e3) {
// Catch block
}
Java – Introdução à POO
COMO CRIAR EXCEPÇÕES
public class Teste1 {
public static void main(String args[]) {
try {
int a[] = new int[2];
int x=5, y = 0;
int R = x/y;
System.out.println("Elemento 3 do array :" + a[3]);

}catch(ArithmeticException e1) {
System.out.print("Erro aritmetico :" + e1);
}
catch(ArrayIndexOutOfBoundsException e2) {
System.out.println("Erro do tipo array :" + e2);
}
catch(Exception e3) {
System.out.println("Erro geral :" + e3);
}
}
}
Java – Introdução à POO
• Apesar de possuir dois erros, apenas a primeira excepção foi disparada, visto que o
tratamento de erros para múltplicos blocos catch assemelha-se ao switch, onde após
um dos catchs ser invocado, os restantes são ignorados.
• O tratamento da excepção geral (Exception) foi declarado no ultimo catch, pois, esta
classe possibilita tartar grande parte das excepções referidas, pois elas são sub
classes de Exception. Assim, o programa anterior pode ser reduzido a:

public class Teste1 {


public static void main(String args[]) {
try {
int a[] = new int[2];
int x=5, y = 0;
int R = x/y;
System.out.println("Elemento 3 do array :" + a[3]);

}catch(Exception e3) {
System.out.println("Erro geral :" + e3);
}
}
}
Java – Introdução à POO
CONCEITOS ADICIONAIS
Pesquise os restantes conceitos relacionados à tratamento de erros. O site
abaixo apresenta uma explicação detalhada sobre cada um deles.
Em caso de dúvidas, publique a sua questão no forum.
Vamos a isto!

a)THROWS b)THROW c)Excepções definidas pelo programador

https://www.devmedia.com.br/tratando-excecoes-em-java/25514

https://www.caelum.com.br/apostila-java-orientacao-objetos/excecoes-e-controle-
de-erros/#outro-tipo-de-exceo-checked-exceptions

https://www.tutorialspoint.com/java/java_exceptions.htm
Java – Introdução à POO
Reflexão

1 - Escreva um programa que simule as seguintes excepções:

a)StringIndexOutOfBoundsException

b) NumberFormatException

Você também pode gostar