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

Exceção No Delphi


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

2 respostass a esta questão

Posts Recomendados

  • 0

Se você está executando dentro do Delphi, esse é o normal (aparecer primeiro a exceção do Delphi e depois executar o tratamento que você escreveu). Após compilado e executado diretamente (fora do ambiente do Delphi) você só verá o resultado do tratamento.

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 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

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

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