Muito bom, facilita bastante o tratamento dos erros, fica fácil de identificar onde consertar um bug olhando o log, realmente muito bom, continua mandando dicas assim, isso nos ajuda demais, e já sou fã do seu trabalho !!!! Excelente !
Sensational, Encontrei o canal buscando atualização de conhecimento para a plataforma RAD 10 e me surpreendi com a dinamica e empatia com aqueles vivem o dia a dia de desenvolvedor e suas nuances!
Muito bom Thulio, parabéns pelo vídeo. Tenho algumas sugestões para quem for implementar isso no seu software, por exemplo: 1 - Gravar informações do sistema operacional, mais detalhes sobre a classe que captura essas informações em docwiki.embarcadero.com/Libraries/Tokyo/en/System.SysUtils.TOSVersion 2 - Se o erro ocorrer devido ao select, insert, update ou delete no banco de dados, pode-se gravar a instrução SQL onde ocorreu o erro. Além do exemplo feito pelo Thulio, se a ClassType do erro for originada do Exception do FireDAC pode-se capturar a instrução SQL, por exemplo: if E.ClassType = EFDDBEngineException then begin ... end; Mais detalhes em docwiki.embarcadero.com/RADStudio/Seattle/en/Handling_Errors_(FireDAC). o/
Excelente Túlio, estava tentando fazer algo parecido, mas você fez de maneira bem simples e bastante funcional. Mas eu ainda tenho uma questão que ainda não consegui resolver que é não aparecer a mensagem de erro, tenho uma aplicação que roda para apresentação de dados em uma TV e as vezes ocorre na atualização dos dados erro de conexão com servidor ou algo parecido e acaba ficando o erro na tela, se puder esclarecer ou menciona por onde posso conseguir resolver essa questão agradeço imensamente.
Thulio. Depois que te descobri na internet e assiste seus vídeos. Fiquei entusiasmado com seus vídeos. Deu vontade de desmanchar tudo que fiz ate hoje. E começar tudo do zero.Minha forma de programar está muito atrasada.
Esse tratamento me ajudou muito. Mas tenho uma dúvida. Como conseguir o mesmo resultado (um arquivo de Log) do Firedac? Por exemplo: Estou tendo problemas com o Length() do campo, consigo contornar isso com um copy(var,0,39) Mas ajudaria muito ter um log para isso. Quando executa o ExecSQL ele acusa o erro. Vlw!
Consegui uma solução em cima do seu exemplo. Criei uma procedure: GravarLogQuery(Nome, Form, Classe, Msg: String); begin FLogFile := ChangeFileExt(ParamStr(0), '.log'); GravarLog('Query: ' + Nome); GravarLog('Caption: ' + Form); GravarLog('EClass: ' + Classe); GravarLog('Erro: ' + Msg); end; E chamo ela dentro do Exception do Try. Não ficou muito elegante mas resolveu o problema. Muito obrigado pela dica. Tenho visto suas aulas, não se preocupe vou buscar melhorar e não me limitar à POG. xD Vlw!
Parabéns Thulio, ficou bem claro e funcional o código. Aproveito pra falar que implementei uma tela pra ser exibido pro usuário o erro, nesse seu projeto. Onde posso estar compartilhando com a galera?
Parabéns pelas dicas, sempre contribuindo bastante com a comunidade delphi. Acompanho sempre seus vídeos, aqui e no site. Thulio, tenho a seguinte dúvida, é possível obter o SQL de uma "Query" quando ocorrer uma exceção?
Valeu Thulio... Você me ajudou bastante.
Grande Abraço e até o proximo.
Fiz num App firemonkey Androide mas não dispara a minha procedure de exceção que será?
Muito bom, facilita bastante o tratamento dos erros, fica fácil de identificar onde consertar um bug olhando o log, realmente muito bom, continua mandando dicas assim, isso nos ajuda demais, e já sou fã do seu trabalho !!!! Excelente !
Sensational, Encontrei o canal buscando atualização de conhecimento para a plataforma RAD 10 e me surpreendi com a dinamica e empatia com aqueles vivem o dia a dia de desenvolvedor e suas nuances!
Parabéns pelo trabalho!
Muito bom Thulio, parabéns pelo vídeo.
Tenho algumas sugestões para quem for implementar isso no seu software, por exemplo:
1 - Gravar informações do sistema operacional, mais detalhes sobre a classe que captura essas informações em docwiki.embarcadero.com/Libraries/Tokyo/en/System.SysUtils.TOSVersion
2 - Se o erro ocorrer devido ao select, insert, update ou delete no banco de dados, pode-se gravar a instrução SQL onde ocorreu o erro. Além do exemplo feito pelo Thulio, se a ClassType do erro for originada do Exception do FireDAC pode-se capturar a instrução SQL, por exemplo:
if E.ClassType = EFDDBEngineException then
begin
...
end;
Mais detalhes em docwiki.embarcadero.com/RADStudio/Seattle/en/Handling_Errors_(FireDAC).
o/
Parabéns Thulio pelas dicas.
Thulio Bittencourt é foda. Seus conteúdos são realmente muito bons, já comprei alguns cursos e não me arrependo.
Parabéns por mais essa dica valiosa.
Cada vez mais surpreso com suas dicas. Simples, claro, objetivo, sensacional, fodástico. Parábens.
Parabéns Thulio, como sempre mostrando de forma pratica, como simplificar nosso dia a dia.
Muito bom Parabéns Thulio.
Eu tenho uma função de gravarlog e realmente chamava no try except essa maneira que você mostrou é show de bola vou começar a usar vlw pela dica
Excelente, Delphi é incrível quero ser um bom programador em Delphi
Parabéns e obrigado, pela iniciativa. Grande abraço.
Excelente Túlio, estava tentando fazer algo parecido, mas você fez de maneira bem simples e bastante funcional. Mas eu ainda tenho uma questão que ainda não consegui resolver que é não aparecer a mensagem de erro, tenho uma aplicação que roda para apresentação de dados em uma TV e as vezes ocorre na atualização dos dados erro de conexão com servidor ou algo parecido e acaba ficando o erro na tela, se puder esclarecer ou menciona por onde posso conseguir resolver essa questão agradeço imensamente.
Thulio, boa noite. O uses é em cada um dos forms a serem criados?
Obrigado pelos vídeos
Nota 10, Adorei!!! value Thulio!!!
Dica muito importante. Ótimo vídeo.
Tem como pega o nome da procedure em que pipocou o erro?
Muito bom a dica parabéns.
Thulio. Depois que te descobri na internet e assiste seus vídeos. Fiquei entusiasmado com seus vídeos. Deu vontade de desmanchar tudo que fiz ate hoje. E começar tudo do zero.Minha forma de programar está muito atrasada.
Show de bola!
Muito boa a dica. Valeu!
Show jovem, Parabéns!
Adorei torna tratamento de erro mais dinamico
Muito bom, obrigado.
Tem como pegar os dados da classe que deu o erro?
Ex: Quando o erro ocorre no objeto que foi instanciado no formulário.
Esse tratamento me ajudou muito. Mas tenho uma dúvida.
Como conseguir o mesmo resultado (um arquivo de Log) do Firedac?
Por exemplo: Estou tendo problemas com o Length() do campo, consigo contornar isso com um copy(var,0,39) Mas ajudaria muito ter um log para isso.
Quando executa o ExecSQL ele acusa o erro.
Vlw!
Consegui uma solução em cima do seu exemplo.
Criei uma procedure:
GravarLogQuery(Nome, Form, Classe, Msg: String);
begin
FLogFile := ChangeFileExt(ParamStr(0), '.log');
GravarLog('Query: ' + Nome);
GravarLog('Caption: ' + Form);
GravarLog('EClass: ' + Classe);
GravarLog('Erro: ' + Msg);
end;
E chamo ela dentro do Exception do Try. Não ficou muito elegante mas resolveu o problema.
Muito obrigado pela dica.
Tenho visto suas aulas, não se preocupe vou buscar melhorar e não me limitar à POG. xD
Vlw!
Parabéns Thulio, ficou bem claro e funcional o código. Aproveito pra falar que implementei uma tela pra ser exibido pro usuário o erro, nesse seu projeto. Onde posso estar compartilhando com a galera?
Talvez inserir uma alteração no GitHub. Ai ele analisa e aprova sua alteração.
Muito bom
Parabéns pelas dicas, sempre contribuindo bastante com a comunidade delphi. Acompanho sempre seus vídeos, aqui e no site. Thulio, tenho a seguinte dúvida, é possível obter o SQL de uma "Query" quando ocorrer uma exceção?
Floppy