View
27
Download
0
Category
Preview:
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 - jsakalauska@gmail.com
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
Recommended