Obrigado por visitar a devmedia.com.br!

Precisamos de você para divulgar nossos vídeos e cursos gratuitos para a comunidade.

Se você gosta da devmedia.com.br por favor dê-nos o seu clique para o Google+ e ajude outros desenvolvedores ao redor do mundo.



Obrigado por seu apoio!
Equipe DevMedia

sair sem compartilhar (x)
DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:

Controle as exceções do seu sistema

Este artigo tem o intuito de ensinar novos programadores a manipular as exceções geradas pelo 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.





    3 COMENTÁRIOS

[Fechar]

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



Marcio Dos Santos
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.


em 1/1/2008 12:24 - Responder

 

Adriano Santos
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


em 2/2/2009 10:46 - Responder

 

[Comentário do autor]   Stavarengo, Rafael
Ok Adriano. Vou te adicionar assim que chegar em casa!


em 27/5/2009 17:04 - Responder
 



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

Programador de sistemas da Cheina Informática com 9 anos de experiência, integrante da equipe editorial da revista Clube Delphi. Domínio em Java, PHP e UML. Sólido conhecimento em Design Patterns e metodologias ágeis. Graduado em Análise e Desenvolvimento de Sistemas pela UNIPAR. Blog: http://stava...


Space do autor
Estatísticas
Favorito:
Comentários:
Feedback:
Utilidade:
1   0
[Fechar]

Você precisa estar logado para dar um feedback.

Clique aqui para efetuar o login
[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
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2012 - Todos os Direitos Reservados a web-03