Fórum Exceção do Interbase #268579
15/02/2005
0
Como posso capturar uma exceção do Interbase, de dentro do delphi?Tentei pelo Try ... Except, mas não consegui ... é como se ele não identificasse o Erro!!!
Como faço??
Obrigada!!
Como faço??
Obrigada!!
Fatima
Curtir tópico
+ 0
Responder
Posts
15/02/2005
Marcio.theis
Eu pelo menos faço da seguinte forma:
Crio duas procedure:
1°) Somente verifica se foi um erro de BD.
2?) Mostra o erro formatado, sendo que tenho um form com um label, dois botões e um memo, para mostrar o erro. E alguns erros deixei traduzido.
3°) No OnCreate do seu form principal deve de adicionar o comando:
É uma idéia de como fazer, vc pode achar outras formas de fazer.
Crio duas procedure:
1°) Somente verifica se foi um erro de BD.
procedure TfrmPrincipal.ErroCad (Sender: TObject; E: Exception); beep; if E is EDBEngineError then MostrarErro (EDBEngineError (E)) else ShowMessage (E.Message);
2?) Mostra o erro formatado, sendo que tenho um form com um label, dois botões e um memo, para mostrar o erro. E alguns erros deixei traduzido.
procedure TfrmPrincipal.MostrarErro (E: EDBEngineError); var I: Integer; begin frmErro:=TfrmErro.Create(Application); with E.Errors[0] do begin if (Category = 38) and (ErrorCode = 9733) and (SubCode=5) then begin frmErro.lblErro.Caption:=´Registro possui alguma referência, portanto não pode ser excluído !´; end; if (Category = 38) and (ErrorCode = 9729) and (SubCode=1) then begin frmErro.lblErro.Caption:=´Código único para o cadastro está duplicado !´; end; end; frmErro.memErro.Lines.Clear; frmErro.memErro.Lines.Add(´Erro: ´ + (E.Message)); frmErro.memErro.Lines.Add(´´); frmErro.memErro.Lines.Add(´Número de erros: ´ + IntToStr(E.ErrorCount)); frmErro.memErro.Lines.Add(´´); // percorre os registros de erro for I := 0 to E.ErrorCount - 1 do begin frmErro.memErro.Lines.Add(´Mensagem: ´ + E.Errors[I].Message); frmErro.memErro.Lines.Add(´ Categoria: ´ + IntToStr(E.Errors[I].Category)); frmErro.memErro.Lines.Add(´ Código do erro: ´ + IntToStr(E.Errors[I].ErrorCode)); frmErro.memErro.Lines.Add(´ Subcódigo: ´ + IntToStr(E.Errors[I].SubCode)); frmErro.memErro.Lines.Add(´ Erro Nativo: ´ + IntToStr(E.Errors[I].NativeError)); frmErro.memErro.Lines.Add(´´); end; frmErro.ShowModal; frmErro.Free; end;
3°) No OnCreate do seu form principal deve de adicionar o comando:
Application.OnException:=ErroCad;
É uma idéia de como fazer, vc pode achar outras formas de fazer.
Responder
Gostei + 0
15/02/2005
Gandalf.nho
[b:93467c575a][color=red:93467c575a]Notificação de Infração às Regras de Conduta :[/color:93467c575a][/b:93467c575a]
Duplicidade
[url]http://forum.clubedelphi.net/viewtopic.php?p=185213[/url]
Para maiores esclarecimentos pode mandar-me uma [url=http://delphiforum.icft.com.br/forum/privmsg.php?mode=post&u=8378]Mensagem Particular[/url].
Duplicidade
[url]http://forum.clubedelphi.net/viewtopic.php?p=185213[/url]
Para maiores esclarecimentos pode mandar-me uma [url=http://delphiforum.icft.com.br/forum/privmsg.php?mode=post&u=8378]Mensagem Particular[/url].
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)