14
1 de 14 Linguagens de Programação Orientadas a Objetos Pós-Gradução(Lato-Sensu) em Sistemas de Banco de Dados - UFPa Marco Fagundes [email protected] Aula 20 - Manipulando Exceções http://www.ufpa.br/sampaio/bd2003/lpoo Elaborado pelos professores: Admilson Ribeiro e Marco Fagundes Marco Fagundes

Linguagens de Programação Orientadas a Objetos

  • Upload
    carlo

  • View
    18

  • Download
    0

Embed Size (px)

DESCRIPTION

Linguagens de Programação Orientadas a Objetos Pós-Gradução(Lato-Sensu) em Sistemas de Banco de Dados - UFPa Marco Fagundes [email protected] Aula 20 - Manipulando Exceções http://www.ufpa.br/sampaio/bd2003/lpoo Elaborado pelos professores: Admilson Ribeiro e Marco Fagundes. - PowerPoint PPT Presentation

Citation preview

Page 1: Linguagens de Programação Orientadas a Objetos

1 de 14

Linguagens de Programação Orientadas a Objetos

Pós-Gradução(Lato-Sensu) em Sistemas de Banco de Dados - UFPa

Marco [email protected]

Aula 20 - Manipulando Exceções

http://www.ufpa.br/sampaio/bd2003/lpoo

Elaborado pelos professores: Admilson Ribeiro e Marco Fagundes Marco Fagundes

Page 2: Linguagens de Programação Orientadas a Objetos

2 de 14

Exceções

As exceções oferecem uma forma clara de verificar e tratar erros deixando o código bem legível

O termo exception significa que uma condição excepcional, fora do normal, ocorreu

Em Java, quando isto ocorre, diz-se que uma exceção é lançada (thrown)

Basicamente, em Java, utilizamos um bloco try/catch para tratar exceções

Page 3: Linguagens de Programação Orientadas a Objetos

3 de 14

Exceções

O código que é responsável por executar alguma ação quando uma exceção ocorre é denominado de exception handler.

Este código “pega” (catches) a exceção lançada e a trata.

A parte try do código é utilizada para definir um bloco de código onde as exceções podem ocorrer.

Page 4: Linguagens de Programação Orientadas a Objetos

4 de 14

Exceções

Seguindo a região try podemos utilizar quantas cláusulas catch quisermos

Os blocos catch seguem o bloco try imediatamente

Não pode existir nenhum outro código entre os blocos catch

Page 5: Linguagens de Programação Orientadas a Objetos

5 de 14

Try, catch e finally

try {

// bloco de código

} catch (ExceçãoTipo1 e) {

// manipulador de exceção para ExceçãoTipo1

} catch (ExceçãoTipo2 e) {

// manipulador de exceção para ExceçãoTipo2

throw(e); // lançar a exceção novamente ...

}finally {

}

Page 6: Linguagens de Programação Orientadas a Objetos

6 de 14

Exceções não-capturadas

class Excecao01 { public static void main(String args[ ]){ int d = 0; int a = 42 / d; }}

java.lang.ArithmeticException: / by zero at Excecao01.main(Excecao01.java:4)

Page 7: Linguagens de Programação Orientadas a Objetos

7 de 14

try e catch

class Excecao01 { public static void main{String args[ ]){ try{ int d = 0; int a = 42 / d; }catch (ArithmeticException e) { System.out.println(“divisão por zero”); } }}

Page 8: Linguagens de Programação Orientadas a Objetos

8 de 14

throw

As exceções são lançadas utilizando-se a intrução throw, a qual toma um objeto como seu parâmetro

Uma exceção também pode ser gerada pela chamada de um método que lança (por si) uma exceção

Page 9: Linguagens de Programação Orientadas a Objetos

9 de 14

throw - exemplo

class ThrowDemo{ static void demoproc( ) { try { throw new NullPointerException(“demo”); }catch(NullPointerException e) { System.out.println(“capturada dentro de demoproc”); throw e; } } public static void main(String args[ ]){ try { demoproc( ); } catch(NullPointerException e) { System.out.println(“recapturada: “ + e ); } }}

Page 10: Linguagens de Programação Orientadas a Objetos

10 de 14

Cláusula throws

Se um método é capaz de causar uma exceção com a qual ele mesmo não consegue lidar, ele deve especificar esse comportamento para que os chamadores possam proteger-se contra essa exceção.

A palavra-chave throws é usada para identificar a lista de possíveis exceções que um método pode lançar.

type nome-metodo(lista-arg) throws lista-excecoes{ }

Page 11: Linguagens de Programação Orientadas a Objetos

11 de 14

throws - exemplo

class ThrowsDemo{ static void proced( ) throws IllegalAccessException { System.out.println(“dentro do procedimento”); throw new IllegalAccessException(“demo”); } public static void main(String args[ ]){ try { proced( ); } catch(IllegalAccessException e) { System.out.println(“capturada: “ + e ); } }}

Page 12: Linguagens de Programação Orientadas a Objetos

12 de 14

finally

Às vezes é necessário que determinado bloco de código seja executado independentemente das exceções que são causadas e capturadas

Isto é útil para liberar todos os recursos que possam ter sido alocados no início de um método

Como a execução é transferida automaticamente para o bloco catch, necessitamos de um mecanismo para realizar o cleanup de recursos utilizados pelo programa

Este mecanismo é representado pelo bloco finally

Page 13: Linguagens de Programação Orientadas a Objetos

13 de 14

Tipos de exceção

As exceções em Java são objetos Novos tipos de exceção estendem a classe

Exception

Page 14: Linguagens de Programação Orientadas a Objetos

14 de 14

Exemplo

class MinhaExcecao extends Exception{

private int detalhe;

MinhaExcecao(int a) {

detalhe = a;

}

public String toString( ) {

return “MinhaExcecao[“ + detalhe + “]”;

}

}

class DemoExcecao{

static void calcule (int a) throws MinhaExcecao{

System.out.println(“chamado calcule(“ + a + “).”);

if (a > 10)

throw new MinhaExcecao(a);

System.out.println(“encerramento normal.”);

}

public static void main(String args[ ]){

try {

calcule(1);

calcule(20);

}catch (MinhaExcecao e){

System.out.println(“capturada “ + e);

}

}

}