26
1 Aula 10 Aula 10 Manipulação de Manipulação de Exceções Exceções Universidade do Vale do Rio dos S < Página da Disciplina > www.inf.unisinos.br/~barbosa www.inf.unisinos.br/~barbosa <Endereço do Professor > [email protected] [email protected]

1 Aula 10 Manipulação de Exceções Universidade do Vale do Rio dos Sinos barbosa [email protected]

Embed Size (px)

Citation preview

Page 1: 1 Aula 10 Manipulação de Exceções Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

1

Aula 10Aula 10Manipulação de Manipulação de

ExceçõesExceções

Universidade do Vale do Rio dos Sinos

< Página da Disciplina >

www.inf.unisinos.br/~barbosawww.inf.unisinos.br/~barbosa

<Endereço do Professor >

[email protected]@exatas.unisinos.br

Page 2: 1 Aula 10 Manipulação de Exceções Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

2

1 – Introdução à manipulação de exceções

SumárioSumário

Page 3: 1 Aula 10 Manipulação de Exceções Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

3

1 – Introdução à manipulação de exceções2 – Questões de projeto

SumárioSumário

Page 4: 1 Aula 10 Manipulação de Exceções Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

4

1 – Introdução à manipulação de exceções2 – Questões de projeto3 – Manipulação de exceções em PL/I

SumárioSumário

Page 5: 1 Aula 10 Manipulação de Exceções Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

5

1 – Introdução à manipulação de exceções2 – Questões de projeto3 – Manipulação de exceções em PL/I4 – Manipulação de exceções em Ada

SumárioSumário

Page 6: 1 Aula 10 Manipulação de Exceções Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

6

1 – Introdução à manipulação de exceções2 – Questões de projeto3 – Manipulação de exceções em PL/I4 – Manipulação de exceções em Ada5 – Manipulação de exceções em C++

SumárioSumário

Page 7: 1 Aula 10 Manipulação de Exceções Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

7

1 – Introdução à manipulação de exceções2 – Questões de projeto3 – Manipulação de exceções em PL/I4 – Manipulação de exceções em Ada5 – Manipulação de exceções em C++6 – Manipulação de exceções em Java

SumárioSumário

Page 8: 1 Aula 10 Manipulação de Exceções Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

8

1 – Introdução à manipulação de exceções2 – Questões de projeto3 – Manipulação de exceções em PL/I4 – Manipulação de exceções em Ada5 – Manipulação de exceções em C++6 – Manipulação de exceções em Java7 – Exceções em Mobilidade: Holo

SumárioSumário

Page 9: 1 Aula 10 Manipulação de Exceções Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

9

1 – Introdução à manipulação de exceções - Tratamento de exceções via interrupções

SumárioSumário

Page 10: 1 Aula 10 Manipulação de Exceções Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

10

1 – Introdução à manipulação de exceções - Tratamento de exceções via interrupções - Entrada/saída - READ do Pascal - Diretiva de compilação {$I} do Pascal

SumárioSumário

Page 11: 1 Aula 10 Manipulação de Exceções Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

11

1 – Introdução à manipulação de exceções - Tratamento de exceções via interrupções - Entrada/saída - READ do Pascal - Diretiva de compilação {$I} do Pascal - Erros de faixa de subscrito

SumárioSumário

Page 12: 1 Aula 10 Manipulação de Exceções Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

12

1 – Introdução à manipulação de exceções - Tratamento de exceções via interrupções - Entrada/saída - READ do Pascal - Diretiva de compilação {$I} do Pascal - Erros de faixa de subscrito - Tratamento de exceções adiciona complexidade à linguagem

SumárioSumário

Page 13: 1 Aula 10 Manipulação de Exceções Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

13

1 – Introdução à manipulação de exceções - Tratamento de exceções via interrupções - Entrada/saída - READ do Pascal - Diretiva de compilação {$I} do Pascal - Erros de faixa de subscrito - Tratamento de exceções adiciona complexidade à linguagem - Manipulação de exceção => Manipulador

SumárioSumário

Page 14: 1 Aula 10 Manipulação de Exceções Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

14

1 – Introdução à manipulação de exceções - Tratamento de exceções via interrupções - Entrada/saída - READ do Pascal - Diretiva de compilação {$I} do Pascal - Erros de faixa de subscrito - Tratamento de exceções adiciona complexidade à linguagem - Manipulação de exceção => Manipulador - Vantagens da manipulação de exceções: separa o código de exceções, organiza hierar- quicamente e incorpora na linguagem

SumárioSumário

Page 15: 1 Aula 10 Manipulação de Exceções Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

15

1 – Introdução à manipulação de exceções2 – Questões de projeto 1) Forma dos manipuladores de exceção?

SumárioSumário

Page 16: 1 Aula 10 Manipulação de Exceções Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

16

1 – Introdução à manipulação de exceções2 – Questões de projeto 1) Forma dos manipuladores de exceção?

2) Vínculo entre exceção e manipulador? - Como gerenciar vários pontos de manipulação de exceção? - Como tratar propagação de exceções?

SumárioSumário

Page 17: 1 Aula 10 Manipulação de Exceções Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

17

1 – Introdução à manipulação de exceções2 – Questões de projeto 1) Forma dos manipuladores de exceção?

2) Vínculo entre exceção e manipulador? - Como gerenciar vários pontos de manipulação de exceção? - Como tratar propagação de exceções?

3) Vinculação exceção/manipulação estática ou dinâmica?

SumárioSumário

Page 18: 1 Aula 10 Manipulação de Exceções Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

18

1 – Introdução à manipulação de exceções2 – Questões de projeto 1) Forma dos manipuladores de exceção?

2) Vínculo entre exceção e manipulador? - Como gerenciar vários pontos de manipulação de exceção? - Como tratar propagação de exceções?

3) Vinculação exceção/manipulação estática ou dinâmica?

4) Como tratar a continuação?

SumárioSumário

Page 19: 1 Aula 10 Manipulação de Exceções Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

19

1 – Introdução à manipulação de exceções2 – Questões de projeto 1) Forma dos manipuladores de exceção?

2) Vínculo entre exceção e manipulador? - Como gerenciar vários pontos de manipulação de exceção? - Como tratar propagação de exceções?

3) Vinculação exceção/manipulação estática ou dinâmica?

4) Como tratar a continuação?

5) Como o usuário define novas exceções?

SumárioSumário

Page 20: 1 Aula 10 Manipulação de Exceções Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

20

1 – Introdução à manipulação de exceções2 – Questões de projeto3 – Manipulação de exceções em PL/I - Primeiros mecanismos em uma linguagem - Manipuladores: Blocos de comandos (ON ...) - Continuação: Várias abordagens - Escopo dinâmico do manipulador

SumárioSumário

Page 21: 1 Aula 10 Manipulação de Exceções Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

21

1 – Introdução à manipulação de exceções2 – Questões de projeto3 – Manipulação de exceções em PL/I4 – Manipulação de exceções em Ada - Manipuladores: Cláusula EXCEPTION/WHEN Escopo local. Inserido no final do bloco - Escopo dinâmico exceção/manipulador - Continuação: execução continua após bloco de manipulação EXCEPTION

SumárioSumário

Page 22: 1 Aula 10 Manipulação de Exceções Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

22

1 – Introdução à manipulação de exceções2 – Questões de projeto3 – Manipulação de exceções em PL/I4 – Manipulação de exceções em Ada5 – Manipulação de exceções em C++ - Padronização em 1990 - Manipulador: TRY / CATCH - Escopo dinâmico para exceção/manipulador - Continuação: Continua após o TRY - Após exceção, variáveis stack-dinâmicas e heap-dinâmicas definidas no TRY, são perdidas

SumárioSumário

Page 23: 1 Aula 10 Manipulação de Exceções Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

23

1 – Introdução à manipulação de exceções2 – Questões de projeto3 – Manipulação de exceções em PL/I4 – Manipulação de exceções em Ada5 – Manipulação de exceções em C++6 – Manipulação de exceções em Java - Baseada no C++, com maior enfoque O. O. - Classes de exceções (objetos): Classe Throwable - Manipulador: TRY/CATCH semelhante a C++ - Busca do CATCH compatível com objeto do THROW - Continuação: Semelhante ao do C++ (após o TRY) - Exceções verificadas e não verificadas (cláusula THROWS) - Cláusula FINALLY: sempre executada após o bloco TRY

SumárioSumário

Page 24: 1 Aula 10 Manipulação de Exceções Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

24

1 – Introdução à manipulação de exceções2 – Questões de projeto3 – Manipulação de exceções em PL/I4 – Manipulação de exceções em Ada5 – Manipulação de exceções em C++6 – Manipulação de exceções em Java7 – Exceções em Mobilidade: Holo - Exceções relacionadas com mobilidade - Holo não trata exceções ainda - Que suporte deve ser inserido? - Quais exceções devem ser tratadas?

SumárioSumário

Page 25: 1 Aula 10 Manipulação de Exceções Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

25

Exemplo de exceções em HoloExemplo de exceções em Holo

1) Comando CLONE clone(<ente 1>, <ente 2>)

OBSERVAÇÕES: - Não existe <ente 1> - Já existe <ente 2>

Page 26: 1 Aula 10 Manipulação de Exceções Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br

26

Exemplo de exceções em HoloExemplo de exceções em Holo

2) Comando MOVE move(<ente 1>, <ente 2>)

OBSERVAÇÕES: - Não existe <ente 1> - Não existe <ente 2> - Existe outro ente com o mesmo nome de <ente 1> no interior de <ente 2> - Aspectos de segurança (autorização para mobilidade?) - Aspectos de corretude (algo pendente no ambiente?)