11
28/06/13 Pl aneta Del phi - Arti go | Tratamento de exceções - parte 1... www.planetadelphi.com.br /artigo/124/tratamento- de-excecoes---parte-1 1/11 Buscar por: Fórum Cursos Contato Home | Apostilas| Artigos| Componentes | Dicas| Arquivos | Empregos |

Planeta Delphi - Artigo _ Tratamento de exceções - parte 1

Embed Size (px)

Citation preview

7/14/2019 Planeta Delphi - Artigo _ Tratamento de exceções - parte 1..

http://slidepdf.com/reader/full/planeta-delphi-artigo-tratamento-de-excecoes-parte-1 1/11

28/06/13 Planeta Delphi - Artigo | Tratamento de exceções - parte 1...

www.planetadelphi.com.br/artigo/124/tratamento-de-excecoes---parte-1 1/11

Buscar por:

Fórum

Cursos

Contato

Home |

Apostilas|

Artigos|

Componentes|

Dicas|

Arquivos|

Empregos |

7/14/2019 Planeta Delphi - Artigo _ Tratamento de exceções - parte 1..

http://slidepdf.com/reader/full/planeta-delphi-artigo-tratamento-de-excecoes-parte-1 2/11

28/06/13 Planeta Delphi - Artigo | Tratamento de exceções - parte 1...

www.planetadelphi.com.br/artigo/124/tratamento-de-excecoes---parte-1 2/11

Cursos online

Usuários

Login

Incluir DicaIncluir ArquivoEsqueceu a senha?

Cadastre-se

121 usuários onlineEmpregos

Incluir Vaga

Visualizar Vagas

Geral

Cursos Online

Fórum Delphi

Cursos Online

Delphi 2009MySQL

Acessibilidade WebAjax

Ajax Avançado

CSS

C Sharp / C#

DHTML

Adobe Flex 3

HTML

Internet Móvel

Java J2SE

Java JEE/J2EE Avan.Java JEE/J2EE

 jQuery

Javascript

Javascript Crossbr.

Lógica de Prog.

Lógica de Prog. O.O.

Microformats

PHP Básico

PHP Avançado

PHP e Segurança

Postgree SQL

SEO

Tableless

Usabilidade Web

7/14/2019 Planeta Delphi - Artigo _ Tratamento de exceções - parte 1..

http://slidepdf.com/reader/full/planeta-delphi-artigo-tratamento-de-excecoes-parte-1 3/11

28/06/13 Planeta Delphi - Artigo | Tratamento de exceções - parte 1...

www.planetadelphi.com.br/artigo/124/tratamento-de-excecoes---parte-1 3/11

XHTML

XSL / XSLT

XML

Tratamento de exceções - parte 1

João Marcos Sakalauska

Colunista ainda sem descrição. Caro colunista, por favor envie-nos sua descrição.

Olá amigos leitores!

Há algum tempo venho estudando detalhadamente o tratamento de exceções usando Try, Except, Finally 

e após encontrar muita coisa igual na internet resolvi escrever de forma objetiva o uso dessas cláusulasainda ignoradas por alguns desenvolvedores. Nesse artigo não entrarei em detalhes históricos, já irei direto

ao ponto.

Objetivo desse artigo é apresentar:

- Problemas que geram exceções.

- Try, Finally com exemplos.

- Try, Except com exemplos.

- Try, Except com o tipo de exceção especificado.

Repare a figura abaixo:

Eu tenho certeza que todos os desenvolvedores em algum momento da vida já se depararam com a

mensagem da figura acima, ou então, com outras do tipo: “List index out of bounds (-1)”, ou ainda

 “Cannot make a visible window modal”. Essas mensagens não são geradas simplesmente pela sua

Aplicação ou pelo Delphi, na verdade, elas são exceções não tratadas. Para entender melhor, exceção é um

objeto definido pelo tipo Exception ou uma classe descedente. Sua função é trabalhar especificamente nos

casos de anormalidade que podem ocorrer na Aplicação, exemplo: Se tentarmos acessar um índice não

existente no ListBox uma anormalidade será detectada pela exceção e uma mensagem será mostrada.

Vejamos esse exemplo da forma prática:

Aplicação

7/14/2019 Planeta Delphi - Artigo _ Tratamento de exceções - parte 1..

http://slidepdf.com/reader/full/planeta-delphi-artigo-tratamento-de-excecoes-parte-1 4/11

28/06/13 Planeta Delphi - Artigo | Tratamento de exceções - parte 1...

www.planetadelphi.com.br/artigo/124/tratamento-de-excecoes---parte-1 4/11

Código - Evento OnClick() do Botão "Mostrar".

 

Com a aplicação em execução a Exceção é mostrada após o clique no botão "Mostrar"

Análise

No Evento OnClick() do Botão "Mostrar" repare que existem duas linhas com ShowMessage, mas a

segunda linha nem chega a ser executada. Esse problema ocorreu porque a Aplicação tentou acessar um

índice inexistente e assim, a exceção detectou uma anormalidade na execução do primeiro ShowMessage

e retornou a mensagem "List index out of bounds(-1)".

No Delphi devemos t ratar esse tipo de problema utilizando as cláusulas Try, Except e Finally.

Try - Except - Finally

A cláusula Try é usada para iniciar um bloco que pode conter possíveis erros. Se um erro ocorrer, oprograma não será terminado. Instantaneamente, o Try deixa de ser executado e dá lugar a cláusula

Except ou Finally. Try pode ser usado em inúmeros trechos do código, podendo até ser aninhado.

A cláusula Except é usada para iniciar um bloco caso uma exceção ocorra em Try. Se o bloco que estiver

em Except conter a exceção o programa não será terminado.

A cláusula Finally é usada para iniciar um bloco havendo problemas ou não com a cláusula Try.

Versão 1 - Try - Finally

Nos trechos de código Try - Finally, a cláusula Finally garante que todo o código contido em Finally será

executado independente ou não de problemas no código executado dentro da cláusula Try. Em Try -Finally, Finally geralmente é usado para permitir limpeza de recursos alocados anteriormente.

Exemplo de Implementação

7/14/2019 Planeta Delphi - Artigo _ Tratamento de exceções - parte 1..

http://slidepdf.com/reader/full/planeta-delphi-artigo-tratamento-de-excecoes-parte-1 5/11

28/06/13 Planeta Delphi - Artigo | Tratamento de exceções - parte 1...

www.planetadelphi.com.br/artigo/124/tratamento-de-excecoes---parte-1 5/11

Try

// Trechos de Código

Finally

// Trechos de Código

End;

No exemplo abaixo uma divisão por Zero ocorre sem sucesso em Try exatamente na linha "numero := 1 div

zero;" gerando uma exceção que não é tratada. Assim, a linha "ShowMessage( 'numero / zero = ' +

IntToStr( numero ) );" não é executada e o código dentro da cláusula finally é executado.

 

Depois que o trecho de código da cláusula finally é executado a exceção não tratada retorna a mensagem:

Versão 2 - Try - Except

Nos trechos de código Try - Except, somente se a cláusula Try gerar uma exceção é que a cláusula

Except será executada. Except é usado para realizar ação alternativa quando algo inesperado ocorrer em

Try. A cláusula Except por si só, não pode determinar o tipo de erro encontrado.

Exemplo de Implementação

Try

// Trechos de Código

Except

// Trechos de CódigoEnd;

No exemplo abaixo uma divisão por Zero ocorre sem sucesso em Try exatamente na linha "numero := 1 div

zero;" gerando uma exceção tratada com "ShowMessage('Erro desconhecido encontrado!');". Assim,

7/14/2019 Planeta Delphi - Artigo _ Tratamento de exceções - parte 1..

http://slidepdf.com/reader/full/planeta-delphi-artigo-tratamento-de-excecoes-parte-1 6/11

28/06/13 Planeta Delphi - Artigo | Tratamento de exceções - parte 1...

www.planetadelphi.com.br/artigo/124/tratamento-de-excecoes---parte-1 6/11

nenhuma mensagem de exceção é mostrada.

Resultado da exceção gerada no exemplo acima

 

No caso do Except podemos utilizar diferentes ações para diferentes tipos de exceções tais como

EInOutError. Além disso, a cláusula else pode ser usada para pegar todos os tipos de exceções

inesperadas, e o Tipo geral Exception é usado para pegar todos os tipos de exceções. Atribuindo um nome

à exceção, o texto da mensagem da exceção (Name.Message) pode ser obtido para a exibição, ou então,

para outras finalidades.Quando uma exceção aparece como no próximo exemplo, se a exceção não age sobre sentenças On ou

Else, então uma checagem é feita para ver se estamos num bloco Try aninhado. Caso sim, a cláusula

Except do pai Try é processada. Se não, uma cláusula On ou Else é procurada, e o programa termina.

A cláusula Else não é realmente necessária - é melhor usar On E:Exception Do, o tratamento de exceção

genérico, já que ele fornece a mensagem de erro (E.Message).

Exemplo de Implementação

Try

// Trechos de CódigoExcept

  // E : Exception Do

On Nome : Tipo da Exceção Do

   // Trechos de Código

  Else // opcional

 // Trechos de Código

End;

Nota: Você pode determinar o tipo de erro que ocorreu usando a manipulação de exceção genérica - On

E:Exception Do. 'E' é um ponteiro ao objeto Exception criado pela condição de exceção.

No exemplo abaixo uma divisão por Zero ocorre sem sucesso em Try exatamente na linha "numero := 1 div

zero;" gerando uma exceção tratada de forma que o tipo de exceção seja mostrada, linha on E :

Exception do ShowMessage(E.ClassName + 'erro gerado, com mensagem: ' + E.Message');

7/14/2019 Planeta Delphi - Artigo _ Tratamento de exceções - parte 1..

http://slidepdf.com/reader/full/planeta-delphi-artigo-tratamento-de-excecoes-parte-1 7/11

28/06/13 Planeta Delphi - Artigo | Tratamento de exceções - parte 1...

www.planetadelphi.com.br/artigo/124/tratamento-de-excecoes---parte-1 7/11

 

Resultado da exceção gerada no exemplo acima

 

Antes de encerrarmos a primeira parte deixo alguns pontos importantes para implementação do Try, except

e finally em casos de tratamento de exceções.

Pontos Importantes

Nunca construir tratamento de exceções dessa forma:

Try

...

Except

...

Finally

...

End;

Forma correta de Aninhar tratamento de exceções usando Try, Except, Finally:

Try

  Try

...

  Except

...

  End;

Finally

...End; 

Encerramos aqui a primeira parte referente ao tratamento de exceções, no próximo tópico abordarei mais

profundamente o tratamento de exceções e também apresentarei as listas de exceções mostrando alguns

7/14/2019 Planeta Delphi - Artigo _ Tratamento de exceções - parte 1..

http://slidepdf.com/reader/full/planeta-delphi-artigo-tratamento-de-excecoes-parte-1 8/11

28/06/13 Planeta Delphi - Artigo | Tratamento de exceções - parte 1...

www.planetadelphi.com.br/artigo/124/tratamento-de-excecoes---parte-1 8/11

exemplos. Espero que isso possa ajudar, também espero que vocês possam contribuir com comentários

referente a experiências obtidas com o uso do tratamento de exceções. Dúvidas escrevam para João

Marcos - [email protected]

Publicidade

Vote no artigo

1

2

3

4

5

Quantidade de votos: 0 votos

Aceitação: 0% 

Detalhes do artigo

Categoria: Object pascalAdicionado dia: 08/01/07

Por: João Marcos Sakalauska

Visualizado: 93055 vezes

Últimos comentários

Visualizar próximos 5 comentários

Muito Bom

Exemplo simples, objetivo e explicativo. de fácil entendimento de como corrigir excessões.

Por: Magno em 27/12/2011 às 09:10:32

7/14/2019 Planeta Delphi - Artigo _ Tratamento de exceções - parte 1..

http://slidepdf.com/reader/full/planeta-delphi-artigo-tratamento-de-excecoes-parte-1 9/11

28/06/13 Planeta Delphi - Artigo | Tratamento de exceções - parte 1...

www.planetadelphi.com.br/artigo/124/tratamento-de-excecoes---parte-1 9/11

Bem explicado

Muito bom, eu li algumascoisas no livro do Delphi enão havia entendido direito, com esses exemplos e explicação,

vouconseguir absorver melhor o conteudo do livro.

Por: Rangel Braz em 24/11/2010 às 15:17:34

Ótimo

Cara, não sabe como me ajudou,valeu

Por: Marcello em 15/07/2010 às 12:58:04

Otimo

Otimo Artigos como esse so tinha visto os que nossa amigo Eder Rueda faz, parabéns.

Por: Iramar Ferreira Silva em 11/01/2007 às 01:56:01

Muito Legal

Ajuda Muito principalmente no meu caso que estou começando valeu

Por: Rodrigo Rabber em 11/01/2007 às 01:56:01

Poste seu comentário 

Título

Precisa estar logado ...

Comentário

Precisa estar logado

...

COLUNISTAS

Rubens Antunes

13 artigo(s)

Exio13 artigo(s)

Eder Rueda Fernandes

11 artigo(s)

João Sakalauska

8 artigo(s)

Eneias Carvalho

6 artigo(s)

Kennedy Parreira

7/14/2019 Planeta Delphi - Artigo _ Tratamento de exceções - parte 1..

http://slidepdf.com/reader/full/planeta-delphi-artigo-tratamento-de-excecoes-parte-1 10/11

28/06/13 Planeta Delphi - Artigo | Tratamento de exceções - parte 1...

www.planetadelphi.com.br/artigo/124/tratamento-de-excecoes---parte-1 10/11

6 artigo(s)

Alessandro Oliveira

4 artigo(s)

Wiliam Zacarias

4 artigo(s)

Andreano Lanusse

3 artigo(s)

Jakson Wendt

3 artigo(s)

Sérgio2 artigo(s)

Expedito Cordeiro

2 artigo(s)

Jose Bernardo

2 artigo(s)

Publicidade

Enquete

O que achou do novo site?

Excelente

Bom

Ruim

Votar    Resultado

Validações

Planeta Delphi - www.planetadelphi.com.br - Todos os direitos reservados | Copyright

7/14/2019 Planeta Delphi - Artigo _ Tratamento de exceções - parte 1..

http://slidepdf.com/reader/full/planeta-delphi-artigo-tratamento-de-excecoes-parte-1 11/11

28/06/13 Planeta Delphi - Artigo | Tratamento de exceções - parte 1...

2001-2009