 |
ActiveDelphi .: O site do programador Delphi! :.
|
| Exibir mensagem anterior :: Exibir próxima mensagem |
| Autor |
Mensagem |
gnandi83 Aprendiz

Registrado: Domingo, 15 de Agosto de 2010 Mensagens: 195
|
Enviada: Qua Ago 01, 2012 4:10 pm Assunto: Armazenar mensagens de erros |
|
|
Boa tarde
Pessoal,
Estive pesquisando sobre a classe Except, e vi que tem funcionalidades muito importantes.
Então pensei, pegar esses erros, e armazena-los em um banco, porém, para isso não sei como fazer. Pois quando faço desse modo:
| Código: |
...
except
on E : EIBInterBaseError do
ShowMessage(' Erro na criação de banco de dados! ' +E.Message);
|
Ele vai pegar algum erro de conexão com o banco, seja senha, usuário ou caminho do banco entre outros. Isso sei por que com o E.Message traz o resto da mensagem d erro. mas..como prever o que virá no E.Message para poder fazer uma condição, tipo:
Se for mensagem de caminho invalido, poderia chamar erro 01, por exemplo.
Se for mensagem de usuario ou senha invalido, poderia ser erro 02, por exemplo.
Como poderei pegar a mensagem que trará o E.Message?
Não sei se fui claro..
Desde já obrigado! |
|
| Voltar ao Topo |
|
 |
leandroksc Profissional

Registrado: Quinta-Feira, 29 de Setembro de 2011 Mensagens: 528
|
Enviada: Qua Ago 01, 2012 4:16 pm Assunto: |
|
|
Se entendi direito, vc pode fazer uma análise do texto da mensagem de erro. As mensagens são de certa forma padrão para cada tipo de erro. Logo, se vc utilizar algo assim, pode ajudar:
if Pos('ACCESS VIOLATION', AnsiUpperCase(E.Message)) > 0 then
ShowMessage('Ocorreu um erro ao acessar uma instância de objeto.');
Vc pode ir fazendo isso para cada tipo de mensagem de erro que vc deseja tratar...
Espero que ajude!  |
|
| Voltar ao Topo |
|
 |
Marcelo.Tdsjr Novato

Registrado: Segunda-Feira, 30 de Julho de 2012 Mensagens: 46
|
Enviada: Qua Ago 01, 2012 4:31 pm Assunto: Re: Armazenar mensagens de erros |
|
|
Amigo,
voce pode olhar na documentacao de erros do IB e fazer um case/if no exception seguido de um pos...
Ex.:
if pos('error 0.1.1', e.messege)>0 then
Erro := ErroLogin
else if pos('error 0.1.2', e.messege)> 0 then
Erro:= ErroIp;
.......
| gnandi83 escreveu: | Boa tarde
Pessoal,
Estive pesquisando sobre a classe Except, e vi que tem funcionalidades muito importantes.
Então pensei, pegar esses erros, e armazena-los em um banco, porém, para isso não sei como fazer. Pois quando faço desse modo:
| Código: |
...
except
on E : EIBInterBaseError do
ShowMessage(' Erro na criação de banco de dados! ' +E.Message);
|
Ele vai pegar algum erro de conexão com o banco, seja senha, usuário ou caminho do banco entre outros. Isso sei por que com o E.Message traz o resto da mensagem d erro. mas..como prever o que virá no E.Message para poder fazer uma condição, tipo:
Se for mensagem de caminho invalido, poderia chamar erro 01, por exemplo.
Se for mensagem de usuario ou senha invalido, poderia ser erro 02, por exemplo.
Como poderei pegar a mensagem que trará o E.Message?
Não sei se fui claro..
Desde já obrigado! |
|
|
| Voltar ao Topo |
|
 |
gnandi83 Aprendiz

Registrado: Domingo, 15 de Agosto de 2010 Mensagens: 195
|
Enviada: Qui Ago 02, 2012 8:37 am Assunto: |
|
|
| leandroksc escreveu: | Se entendi direito, vc pode fazer uma análise do texto da mensagem de erro. As mensagens são de certa forma padrão para cada tipo de erro. Logo, se vc utilizar algo assim, pode ajudar:
if Pos('ACCESS VIOLATION', AnsiUpperCase(E.Message)) > 0 then
ShowMessage('Ocorreu um erro ao acessar uma instância de objeto.');
Vc pode ir fazendo isso para cada tipo de mensagem de erro que vc deseja tratar...
Espero que ajude!  |
Não entendi como fazer isso!
Poderia explicar melhor?
Obrigado pela intenção |
|
| Voltar ao Topo |
|
 |
johnny-walker Moderador


Registrado: Sábado, 4 de Outubro de 2003 Mensagens: 10653 Localização: Contagem/MG - BRAZIL
|
Enviada: Qui Ago 02, 2012 12:45 pm Assunto: |
|
|
Alguns tipos de erros vc somente consegue no onrecocileerror, no caso do clientdataset, pois seus erros são silenciosos.
Vc pode simplesmente, colocar uma variável para pegar este tipo de erro, neste caso sem utilizar a tela de onreconcileerror.
bye _________________ P.O.W.E.R B.Y D.E.L.P.H.I |
|
| Voltar ao Topo |
|
 |
gnandi83 Aprendiz

Registrado: Domingo, 15 de Agosto de 2010 Mensagens: 195
|
Enviada: Sex Ago 03, 2012 9:03 am Assunto: |
|
|
| johnny-walker escreveu: | Alguns tipos de erros vc somente consegue no onrecocileerror, no caso do clientdataset, pois seus erros são silenciosos.
Vc pode simplesmente, colocar uma variável para pegar este tipo de erro, neste caso sem utilizar a tela de onreconcileerror.
bye |
Eu tinha visto algo usando o ApplicationEvents. sabes algo a respeito?
Precisaria de algo prático! Para poder mostrar as mensagens de erros traduzidas para o cliente e catalogadas para nós! |
|
| Voltar ao Topo |
|
 |
johnny-walker Moderador


Registrado: Sábado, 4 de Outubro de 2003 Mensagens: 10653 Localização: Contagem/MG - BRAZIL
|
Enviada: Sex Ago 03, 2012 9:14 am Assunto: |
|
|
Repito para o clientdataset não dá para fazer, somente no evento do onreconcileerror, mas outras excessões de EDataBaseError que deriva da classe Excepcion é tranquilo.
Vc deve ter visto mais ou menos isto com este componente no evento onexception:
| Código: |
if E is EIdSocketError then
case EIdSocketError(E).LastError of
10054: begin
Application.MessageBox('Seu captcha e consequentemente sua sessão com o servidor peer da Receita Federal expirou.', 'Aviso do Sistema', mb_ok+mb_iconwarning);
LoadCapcha(IdHTTP1, Image1.Picture);
end;
10053: Application.MessageBox('Houve uma falha de conexão de número #10053 com a internet.', 'Aviso do Sistema', mb_ok+mb_iconwarning);
10060: Application.MessageBox('Ocorreu uma falha na conexão de "Tempo Esgotado" de número #10060.', 'Aviso do Sistema', mb_ok+mb_iconwarning);
10061: Application.MessageBox('Houve uma falha de "Conexão recusada" de número #10061 pelo servidor.', 'Aviso do Sistema', mb_ok+mb_iconwarning);
11004: Application.MessageBox('Houve uma falha na conexão de número #11004 com a internet.', 'Aviso do Sistema', mb_ok+mb_iconwarning);
end;
|
bye _________________ P.O.W.E.R B.Y D.E.L.P.H.I |
|
| Voltar ao Topo |
|
 |
gnandi83 Aprendiz

Registrado: Domingo, 15 de Agosto de 2010 Mensagens: 195
|
Enviada: Sex Ago 03, 2012 10:10 am Assunto: |
|
|
Exatamente isso:
Isso para conexão com a net, e como faço com eventos do tipo:
digitar errado, não validar algo? |
|
| Voltar ao Topo |
|
 |
|
|
Enviar Mensagens Novas: Proibido. Responder Tópicos Proibido Editar Mensagens: Proibido. Excluir Mensagens: Proibido. Votar em Enquetes: Proibido.
|
|