Whats new? | Login
Cadastre-se | Atendimento | RSS
 
Live chat by Netwatts
Home Entenda o site Revistas Canais Cursos Palestras Suporte Fórum +Serviços Assine Compre Créditos
Você está em: / canal Delphi [artigos]
   + Delphi:   artigos   |   vídeos   |    cursos   |    mais
 
 
Outras seções:
Home 
Entenda o site 
Revistas 
Canais 
Cursos 
Palestras 
Suporte 
Fórum 
Oportunidades 
 Todos os links 

 
  Ir para o Canal Delphi  
+Canais:
Canal Delphi 
Canal Java 
Canal .net 
Canal Banco de dados 
Canal Mobile 
Canal Ruby on Rails 
Canal PHP 
Canal ASP 
Canal WebDesign 
Canal Engenharia de Software 
Canal Linux 
Canal Scripting 
Canal Outros 
  Todo conteúdo DevMedia 

 
  ver cursos de Delphi  
+Cursos:
Cursos de Java 
Cursos de .net 
Cursos de Banco de dados 
Cursos de Delphi 
Cursos de Engenharia de Software 
Cursos de Ruby on Rails 
Cursos de ASP 
Cursos de WebDesign 
Cursos de PHP 
Cursos de PalmOS 
Cursos de Linux 
Cursos de Scripting 
  Formações completas 
  Todos os cursos 

 
Canal de conteúdo Delphi
Revista ClubeDelphi
Suporte Delphi
Formacoes completas Delphi
Palestras de Delphi
E-books de Delphi
Downloads de Delphi
 

+Revistas:
ClubeDelphi 
.net Magazine 
Java Magazine 
webMobile Magazine 
SQL Magazine 
Engenharia de Software Magazine 
  Edições anteriores impressas 
  Todas as revistas 


[Fechar]
Este post está disponível para quem é assinante 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$ 0,00 (assinante) ou R$ 0,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$ 0,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


Controle as exceções do seu sistema

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.





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 deste post:
Visualizações:  6191
Favoritado:  11 vez(es)
 
Conteúdo:
Didática:
Utilidade:
1 0
Feedbacks: 1

  Central de Serviços:
Inclua seu próprio artigo! (ajuda)
Participe! Inclua um comentário
Adicionar este post a Favoritos
Marcar este post como lido/assistido
Inclua uma anotação pessoal (ajuda)
RSS Feeds
Versão para impressão



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
5/27/2009 5:04:06 PM
[* Comentário do autor]

 Artigos
Ok Adriano. Vou te adicionar assim que chegar em casa!
Responder
[Fechar]

Você precisa estar logado para dar seu feedback.

Clique aqui para efetuar o login

Caso não tenha um cadastro DevMedia, clique aqui para se cadastrar (gratuito)
 
DevMedia Group - Tel: (21) 3382-5038 - www.devmedia.com.br
2009 - Todos os Direitos Reservados a DevMedia Group