Sie sind auf Seite 1von 11

Java e Orientação a Objetos

• Exceções
– Execeção é um acontecimento que
interrompe o fluxo de processamento de
uma classe, ou seja, um erro em tempo
de execução

– Os métodos podem capturar ou lançar


exceções que ocorrem durante o
processamento
Java e Orientação a Objetos
• Exceções
– São objetos criados a partir de classes
especiais

– Exemplos
• ArrayIndexOutOfBoundsException, ocorre ao
acessar um elemento inexistente de um array
• NumberFormatException, ocorre ao enviar um
parâmetro não-numérico para o método
Integer.parseInt()
Java e Orientação a Objetos
• Exceções
– Tratando Exceções
• try-catch-finally é utilizado para tentar
capturar exceções dentro de métodos

public class Exemplo { public class Exemplo {


public static void main( String[] args ) { public static void main( String[] args ) {
System.out.println(“Inicio"); System.out.println(“Inicio");
System.out.println(args[1]); try{
System.out.println(“Fim"); System.out.println(args[1]);
} } cath (ArrayIndexOutOfBoundsException e){
} System.out.println(“Ocorreu uma exceção”);
}
Se a classe for executada sem receber System.out.println(“Fim");
argumentos a posição do array não é válida. }
Isso irá gerar uma exceção/erro em tempo }
de execução, logo o processamento será
interrompido. Casso ocorra um erro/exceção em tempo de
execução ao acessar a posição 1 do vetor o erro
será capturado.
Java e Orientação a Objetos
• Exceções
– Tipos de Exceções
• Unchecked
– Ex: acesso indevido a objetos nulos, limites de
vetor ultrapassados, divisão por zero
– Devem ser corrigidos pelo programador

public class Divisao {


public static void main(String args[]) {
int i = 7;
i = i / 0; public class ReferenciaNula {
System.out.println(“Divisão: " + i); public static void main(String args[]) {
} Conta c = null;
} System.out.println(c.getSaldo());
}
}
Java e Orientação a Objetos
• Exceções
– Tipos de Exceções
• Checked
– Ex: arquivo não encontrado, rede fora do ar
– Podem ser contornados em tempo de execução

public static void metodo() {


try {
new java.io.FileReader("arquivo.txt");
} catch (java.io.FileNotFoundException e) {
System.out.println("Nao foi possivel abrir o arquivo para leitura");
}
}
O compilador exige que exceções como essas sejam tratadas previamente
com blocos try-catch-finally
Java e Orientação a Objetos
• Exceções
– Tipos de Exceções
• Checked
– Podem ser tratadas ou passadas para quem chamou
um determinado método

public static void metodo() throws java.io.FileNotFoundException{


new java.io.FileReader("arquivo.txt");
System.out.println("Nao foi possivel abrir o arquivo para leitura");
}
Java e Orientação a Objetos
• Exceções
– Hierarquia Object

Throwable

Exception Error

RuntimeException MinhaExcecao FileNotFoundException IOException UnknownError

ArrayIndexOutOfBoundsException VirtualMachineError

NumberFormatException
InternalError

NullPointerException
OutOfMemoryError

ClassCastException
Java e Orientação a Objetos
• Exceções
– Hierarquia
• Podemos tratar mais de um erro dentro de um
mesmo bloco, mas a hierarquia deve ser
obedecida
public void metod(String arquivo) {
try {
objeto.metodoQuePodeLancarIOeSQLException();
new File(“arquivo.txt”);
} catch (FileNotFoundException e){
System.out.println(e);
} catch (IOException e) {
System.out.println(e);
} catch (SQLException e) {
System.out.println(e);
}
}
Java e Orientação a Objetos
• Exceções
– Lançando exceções
• Podemos tratar mais de um erro dentro de um
mesmo bloco, mas a hierarquia deve ser
obedecida
void saca(double valor){
if (this.saldo < valor){
throw new IllegalArgumentException("Saldo insuficiente");
} else {
this.saldo-=valor;
}
}
Java e Orientação a Objetos
• Exceções
– Criando seu próprio tipo de exceção
public class SaldoInsuficienteException extends RuntimeException{
SaldoInsuficienteException(String message){
super(message);
}
}

void saca(double valor){


if (this.saldo < valor){
throw new SaldoInsuficienteException("Saldo Insuficiente");
} else {
this.saldo-=valor;
}
}
Java e Orientação a Objetos
• Exercícios
Dada a seguinte classe:
public class TestException {
public static void main(String[] args) {
for (int i=0; true; i++) { System.out.println("args["+i+"]="+ args[i]); }
System.out.println("Quiting...");
}
}
Compile e rode a classe TestException. E como saída será:
java TestExceptions one two three
args[0]=one
args[1]=two
args[2]=three
Exception in thread "main"
java.lang.ArrayIndexOutOfBoundsException: 3
at TestExceptions.main(1.java:4)
Modifique a classe TestException para tratar esta exceção. A saída depois do tratamento da
exceção deverá ser:
java TestExceptions one two three
args[0]=one
args[1]=two
args[2]=three
Exception caught: java.lang.ArrayIndexOutOfBoundsException: 3
Quiting...

Das könnte Ihnen auch gefallen