Controle as exceções do seu sistema
Este artigo tem o intuito de ensinar novos programadores a manipular as exceções geradas pelo sistema.
Estatísticas:










votos: 1
Serviços:

Controle as exceções do seu sistema
Neste artigo nos veremos como tratar as exceções que podem a vir acontecer inesperadamente no seu sistema de maneira geral. Nós faremos isso com um componente que esta presente no Delphi desde a versão 5: TApplicationEvents. Ele herda as funcionalidades do objeto TApplication, porém, o objeto TApplication não é visual, o que não é o caso do componente TApplicationEvents. Ele é visual e pode ser encontrado na paleta de componentes Aditional.
Qualquer aplicação esta sujeito a erros, seja ele originado por uma quebra de integridade do banco de dados ou qualquer outro motivo. Por tanto ao invés de criarmos um bloco try..except em cada procedimento do sistema, nós vamos criar um único procedimento que fará o tratamento de todas as exceções que possam ser gerados pelo sistema.
Essa rotina será de fácil implementação, visto que o componente TApplicationEvents possui o evento OnException. Este evento é disparado quando qualquer exceção for gerada pelo seu sistema. OnException possui dois parâmetros. Veja abaixo:
procedure TForm1.ApplicationEvents1Exception(Sender: TObject; E: Exception);
Sender: TObject
Objeto que chamou este evento.
E: Exception
Este parâmetro possui as informações da exceção gerada, como por exemplo, a mensagem de erro.
Agora nos veremos um exemplo bem simples, onde ao ocorrer uma exceção, será verificado se foi um erro da conversão de um valor para o tipo data. Para este exemplo vamos encarar que a única exceção prevista no seu sistema, era a possibilidade de o usuário digitar uma data invalida e que qualquer outra exceção será tratada como desconhecida.
procedure TForm1.ApplicationEvents1Exception(Sender: TObject; E: Exception);
begin
{O if abaixo verifica se a frase is not a valid date existe dentro da mensagem de erro gerada pela exceção. Caso a frase exista, significa que foi gerado um erro de conversão para data}
if Pos(UpperCase(is not a valid date), UpperCase(E.Message))>0 then//se for um erro de conversão para data
begin
ShowMessage(A data digitada não é válida. Tente novamente com outra data.);
end
else
begin
ShowMessage(O sistema encontrou gerou uma exceção inesperada e será fechado);
Halt(0);//finaliza o programa
end;
end;
No exemplo acima caso a exceção não seja conhecida o sistema emite um aviso do problema e logo em seguida finaliza o programa. O que nos vamos fazer agora é testar se a exceção é conhecida e caso ela não seja, iremos fazer com a exceção seja apresentada ao usuário sem tratamento algum.
procedure TForm1.ApplicationEvents1Exception(Sender: TObject; E: Exception);
begin
{O if abaixo verifica se a frase is not a valid date existe dentro da mensagem de erro gerada pela exceção. Caso a frase exista, significa que foi gerado um erro de conversão para data}
if Pos(UpperCase(is not a valid date), UpperCase(E.Message))>0 then//se for um erro de conversão para data
begin
ShowMessage(A data digitada não é válida. Tente novamente com outra data.);
end
else
begin
{caso seja uma exceção desconhecida, a linha de código abaixo ira recriar exceção sem fazer tratamentos algum}
raise Exception.Create(E.Message);
end;
end;
A técnica aprendida neste artigo pode ser utilizada para diversas finalidades. Você pode, por exemplo, fazer com que seu sistema registre cada exceção gerada por ele e que esses registros sejam enviados a você para análise e correção do mesmo. Desta maneira antes mesmo que o usuário possa reclamar de alguma coisa você já o terá corrigido.

Participe! Inclua um comentário
1/1/2008 12:24
[responder]



Adriano Santos
2/2/2009 10:46
Tudo jóia? Sou editor chefe da revista ClubeDelphi e o Gladstone me passou seu contato. Me informou que você tem interesse em escrever artigos, certo?
Vamos conversar a respeito? Quais assuntos você domina e deseja falar?
Meu adicione no msn para que possamos conversar se for o caso.
falecom@adrianosantos.pro.br
Adriano Santos
Director X-35 Consulting and Development
IT Manager SoftPark
Chief Editor Magazines ClubeDelphi && WebMobile
www.delphitodelphi.blogspot.com
www.adrianosantos.pro.br
www.devmedia.com.br
www.dug-sp.com
[responder]
-2.jpg)
STAVARENGO, RAFAEL
27/5/2009 17:04



Sistema completo para Backup/Restore com Firebird - Parte II

Utilize a interface TDI sem modificar sua aplicação

Sistema completo para Backup/Restore com Firebird - Parte I

Mudando o status da base de dados no Delphi

Utilizando o gBak do Firebird para efetuar backup/restore

Controle as exceções do seu sistema



Curso Online - Delphi Fundamental (Win32)

Curso Online-Aplicação Financeira com Delphi 2009 e MySQL

Curso on-line Rave Reports

Curso Online - Criando uma Aplicação multi-camadas Completa com Delphi

Rad Studio 2007-DBX4 e Firebird 2.0-Aplicação comercial de vendas do Inicio ao Fim

Introdução ao ASP

Curso Completo MySQL

jQuery – A Biblioteca JavaScript para Webdesigners




[vídeo] Consumindo os dados via ajax – Consumindo dados com getJson do jQuery utilizando POCO EF 4.0 – Parte 3

[vídeo] Classe POCO – Consumindo dados com getJson do jQuery utilizando POCO EF 4.0 – Parte 1

Imprimindo Relatório : VCL Crystal Reports XI - Delphi

VCL Crystal Reports XI - Delphi

[vídeo] Gerenciamento das Comunicações - Curso Gerência de Projetos – Parte 8

[vídeo] Plano de Comunicação - Curso Gerência de Projetos – Parte 9

[vídeo] Seleção e Priorização de Projetos - Curso Gerência de Projetos – Parte 6

[vídeo] Escopo, metas, premissas, restrições - Curso Gerência de Projetos – Parte 7

[vídeo] Documento Conceitual do Projeto - Curso Gerência de Projetos – Parte 5


Você está em:





Conheça os planos de créditos DevMedia e visualize esse post agora mesmo!


