Whats new? | Login | Parceiros
Cadastre-se | Atendimento | RSS
+ Delphi:
artigos   |   vídeos   |    cursos   |    mais

Controle as exceções do seu sistema

Este artigo tem o intuito de ensinar novos programadores a manipular as exceções geradas pelo sistema.

STAVARENGO, RAFAEL
Cinco anos de experiência com Delphi. Na 3º série do ensino superior. Portifólio: http://www.rafaelstavarengo.110mb.com/


Ver space do autor


Estatísticas:
Visualizações:
6656
Favoritado:
 11 vez(es)
Conteúdo:
Didática:
Utilidade:
1 0
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
[Fechar]

Este post é fechado - você precisa ter acesso ao post para incluir um comentário.


Marcio dos Santos
1/1/2008 12:24
Ótimo Parabéns, ótimo artigo. Com um pouquinho de criatividade, conceitos de orientação a objeto e sem muito esforço é possível tratar os mais diversos erros e ao mesmo tempo dar consistência ao seu sistema.

[responder]

 

Adriano Santos
2/2/2009 10:46
Produção de artigos Olá Rafael,

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]

 

STAVARENGO, RAFAEL
27/5/2009 17:04
[Comentário do autor] RE:   Ok Adriano. Vou te adicionar assim que chegar em casa!

[responder]
 



 
 

[Este post ainda não foi associado a uma sequência]


[Fechar]
Este post está disponível para assinantes da ClubeDelphi ou para quem possui Créditos DevMedia.

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

Plano conveniência – Neste plano este post custa R$ 0,00 (Compre agora)
Esse plano permite que você compre somente um post, pagando por ele seu preço sem desconto.

Plano ocasional: Aqui este post custa: R$ -1,00 (assinante) ou R$ -1,00 (não-assinante)
Este plano é ideal para quem tem interesse em mais de um post. Você compra um mínimo de R$ 50,00 em créditos e ganha, em média, 50% de desconto no preço do post. Compre Créditos agora!

Assinatura de Créditos (Plano econômico) – Aqui este post custa R$ -1,00
Este plano é ideal para quem tem interesse em muitos posts. Com esse plano você compra R$ 180,00 em créditos e ganha, em média, 80% de desconto no preço do post. Assine este plano agora!

> Saiba mais sobre o Sistema de Créditos DevMedia
DevMedia Group   www.devmedia.com.br   |   www.javafree.org   |   www.mrbool.com
2010 - Todos os Direitos Reservados a DevMedia Group - (21) 3382-5038