Com este código você pode implementar seus programas em Kylix com um único tratamento de erros.
Ao acontecer um erro não tratado, será chamado o procedimento EventoErro, que irá tratá-lo de forma genérica, exibindo a mensagem: 'ERRO: Ocorreu um erro indeterminado! Este erro pode ser fatal.' e depois finaliza a aplicação, gravando em log o erro completo com sua descrição.
Claro que modificando o procedimento você pode mudar o tratamento, não finalizando a aplicação, ou mudando a mensagem.
Bom, vamos começar com a dica, vou chamar o form principal de sua aplicação Kylix como Form1.
No form principal da sua aplicação Kylix localize as linhas:
private
{ Private declarations }
public
{ Public declarations }
end;
Modifique para:
private
{ Private declarations }
Caminho : String; // Inclusão.
NomeDoUsuario : String; // Inclusão.
public
{ Public declarations }
Procedure EventoErro(Sender: TObject; E: Exception); // Inclusão.
end;
- NomeDoUsuario: É uma variável de sugestão para que você trate melhor o seu log, você pode inicializa-la em alguma parte do s eu código com o nome do usuário que está usando o sistema, ou deixar vazia (digo, NomeDoUsuario := '';).
- Caminho: É uma variável, que contém o path para gravação do seu log de eventos de erro, não esquecendo dos direitos de gravação. Exemplo: Caminho := '/var/log/diretoriolog/';
Depois inclua o procedimento abaixo no seu código:
procedure TForm1.EventoErro(Sender: TObject; E: Exception);
var
F : TextFile;
S : String;
I : Integer;
begin
{$I-}
Try
I := 0;
S := '';
While (E.Message[I] <> Chr(13)) and (I < Length(E.Message)) do
Begin
I := (I +1);
S := (S + E.Message[I]);
End;{do}
S := (DateTimeToStr(Now)+' '+NomeDoUsuario+': '+S);
AssignFile(F,(Caminho+'errolog.txt'));
If FileExists((Caminho+'errolog.txt')) Then
Append(F){}
Else
Rewrite(F);{if}
Writeln(F,S);
CloseFile(F);
ShowMessage('ERRO: Ocorreu um erro indeterminado! Este erro pode ser fatal.');
Application.Terminate;
Abort;
Except
Application.Terminate;
Abort;
End;{try}
{$I+}
end;{procedure}
Inclua a linha abaixo no formulário principal de sua aplicação, coloque-a no evento de Create ou de FormShow:
Application.OnException := EventoErro;
Assim todos os eventos de erro do seu programa serão gravados no log de erro.
Se você tratar uma parte do seu código com try except end; o procedimento EventoErro será ignorado, e o seu procedimento desta parte do código, em específico, será utilizado.
OK.
Nenhum comentário foi encontrado.