Pesquisar na Comunidade
Showing results for tags 'tramamento de erros generico'.
Encontrado 1 registro
-
tapplicationproperties Tratar todos os erros não tratados
um tópico no fórum postou RibaSoft Object Pascal - Delphi & Lazarus
Olá queridos companheiros, pesquisei muito sobre uma forma de tratar erros inesperados que causam o fechamento da aplicação e acabei descobrindo (ou inventando kkk), um modo de tratar todos os erros que não foram tratados, vi uma postagem de mais de um ano aq no forum mas não puder dar sequencia nela por estar fechada. Nesse post vi a sugestão do componente TApplicationProperties, para usar seu evento OnException, mas ao tentar usar ele, disparava 3 vezes, sem contar que ao colocar um componente em um form e herda-lo, ele componente fica aparecendo em todos os forms e eu só meio xarope e isso me incomoda. Seguinte.... Eu uso um FormPadrao no qual estão todas procedures (ferramentas) criadas por mim e algumas outras facilidades como mudar de campo com Enter, fechar as janelas com Esc, etc. E derivo todos os meus outros forms desse para herdarem essas funções e propriedades. Nele eu criei o seguinte procedimento. //================================== Inicio do Procedimento ==================================\\ procedure TFormPadrao.OnException(Sender: TObject; E: Exception); var auxLog: TextFile; begin try AssignFile(auxLog, 'Log_Exceptions.txt'); if (FileExists('Log_Exceptions.txt')) then begin Append(auxLog); end else begin Rewrite(auxLog); WriteLn(auxLog, 'Log de Erros!'); WriteLn(auxLog, ''); end; WriteLn(auxLog, FormatDateTime('dd/MM/yyyy - hh:mm:ss',now) + ' => Origem: ' + Sender.ToString + ' => Erro: ' + E.Message); finally CloseFile(auxLog); end; Riba.Aviso('Origem: ' + Sender.ToString + ' => Erro: ' + E.Message); if(Sender is TForm)then (Sender as TForm).Close; end; //================================== Fim do Procedimento ==================================\\ E no evento onCreate eu digitei essa linha que associa um procedimento ao um evento Application.OnException := @OnException; Agora todo erro não tratado é mostrado na tela, fecha só o form que deu o erro e faz um log dos erros. obs. Esse Riba.Aviso é pra mostrar mensagens na tela do meu jeito. Se eu fiz algo errado no post me corrijam por favor pois é meu primeiro post compartilhando informação. DEUS abençoe a todos.