Ir para conteúdo
Fórum Script Brasil
  • 0

Tratamento De Exceção (Repetido)


MarcosG2

Pergunta

E ai galera! PRECISO DE AJUDA!!!

O que acontece?

Estou incluindo o seguinte código no evento PostError da minha table pra tratar os possiveis erros da minha aplicação:

---------------------- ---------------------- ---------------------- ----------------

procedure TFrmAlunos.AlunosPostError(DataSet: TDataSet; E: EDatabaseError;

var Action: TDataAction);

begin

inherited;

if (E is EDBEngineError) then

with EDBEngineError(E) do

case Errors[0].ErrorCode of

DBIERR_KEYVIOL: ShowMessage('Aluno já cadastrado!');

DBIERR_REQDERR: ShowMessage('Campo obrigatório não preenchido!');

end

else

ShowMessage('Erro no banco de dados:'+#13#13+ E.Message);

Action := daAbort;

end;

---------------------- ---------------------- ---------------------- ----------------

Mas sempre quando acontece um erro, primeiro ele mostra o erro padrão do delphi e depois que "recompilo" o sistema, ele apresenta a mensagem tratada! O que eu faço pra minha aplicação não mostrar o erro do delphi, somente o erro com o tratamento?

Me ajudem...

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Personalizar a caixa de mensagem de exceções (erro) do Delphi

- Declare um método (procedure) na seção private do form principal conforme abaixo:

private

procedure ManipulaExcecoes(Sender: TObject; E: Exception);

- Vá até a seção implementation e implemente este método, conforme o exemplo:

procedure TForm1.ManipulaExcecoes(Sender: TObject; E: Exception);

begin

MessageDlg(E.Message + #13#13 +

'Suporte técnico:'#13 +

'tecnobyte@ulbrajp.com.br',

mtError, [mbOK], 0);

end;

- No evento OnCreate do Form principal escreva o código abaixo:

procedure TForm1.FormCreate(Sender: TObject);

begin

Application.OnException := ManipulaExcecoes;

end;

=== Para testar ===

- Coloque um Button no form;

- No evento OnClick deste botão coloque o código abaixo:

procedure TForm1.Button1Click(Sender: TObject);

begin

StrToInt('ABCD'); { Isto provoca uma exception }

end;

Observações

Cuidado! Não coloque código que possa gerar exceção na rotina que manipula as exceções, pois se ocorrer uma exceção neste rotina, esta será chamada recursivamente até estourar a pilha.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      651,9k
×
×
  • Criar Novo...