Linha que gerou o exception

Delphi

02/09/2009

No delphi tem como saber a linha que gerou determindado exception?

try
   //código.......
   except
     on E : Exception do
     begin
       ShowMessage(´Exception class name = ´+E.ClassName);
       ShowMessage(´Exception message = ´+E.Message);
     end;

Pelo código acima consigo descobrir a classe que gerou o exception, mas não a linha.

No java consigo descobrir a linha gerou a exceção apartir do comando
minhaExcecao.printStackTrace(); 



Diegotiemann

Diegotiemann

Curtidas 0

Respostas

Osocram

Osocram

02/09/2009

Cara acho que isso no delphi é mais complicado, algo mais baixo nivel. Eu uso o EurekaLog (pago), mas parece que tem um bom que é free MadException, algo assim.

Sobre o Eurekalog vc pode compilar o teu programa com ele, e se der erro no cliente ele gera um relatorio do erro e vc pode mandar por email, ou bugtracker, ou somente deixar na maquina... e la ja vem a linha do erro. Excelente ferramenta.
Tem tbm opção para mostrar os Memory Leak, mas isso não é interessante deixar habilitado no cliente.


GOSTEI 0
Junior Miranda

Junior Miranda

02/09/2009

Não é genial... Mas se não quer gastar uma grana ou fuçar na internet, o que lhe impede de criar uma variável inteira a ser incrementada antes de cada linha do try? no except vc inclui a variável(o valor corresponde a linha) no showmessage. Para ficar ainda ´melhor´, poderia incluir tb o nome do form, método etc.

[]´s


GOSTEI 0
Rtava

Rtava

02/09/2009

diegotiemann,
Instale a biblioteca Jedi em seu Delphi. Depois abra seu projeto, vá ao menu Project do Delphi e marque a opção ´Insert JCL Debug data´. Após isso inclua em seu projeto um novo Form, específico da biblioteca Jedi para fazer este tipo de Debug que você quer, indo no menu File -> New -> Other, na guia Dialogs, a opção de form chamada ´Exception Dialog with Send´. Com este novo form você poderá, além de encontrar a linha que o erro ocorre, também poderá enviar o erro por email. Existem exemplos de implementação desse recurso de Debug do Jedi, inclusive nos exemplos que já vem com a biblioteca.
Para testar inclua um botão no seu form principal e force uma divisão por zero para saber como o programa irá se comportar.
abs


GOSTEI 0
POSTAR