GARANTIR DESCONTO

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!!


Fatima

Fatima

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.

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].


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar