我有一个线程化的应用程序,出于某种目的,我想将捕获到的异常的调用堆栈信息传递给新的自定义异常:
try
//here an unknown exception is rissen
except
on E: Exception do
begin
if ... then
raise EMyException.Create(E, CallStackOfExceptionEAsString);
end;
end;
最好使用EurekaLog的最佳方法是什么?我正在使用Delphi 2006 btw。
最佳答案
EurekaLog公开了几个事件处理程序,例如OnExceptionNotify
。
您可以在代码中实现这些。例如:procedure EurekaLogExceptionNotify( EurekaExceptionRecord: TEurekaExceptionRecord; var Handled: Boolean);
在这里,您可以看到在TEurekaExceptionRecord
中定义的ExceptionLog.pas
。但是您可能只是拥有可以正常工作的非源代码版本。
该记录具有EurekaExceptionRecord.CallStack
列表。可以使用TStrings
单元中定义的CallStackToStrings
方法将该专有列表转换为ExceptionLog
。
这是我将CallStack写入StringList的示例。
CallStackList := TStringList.Create;
try
CallStackToStrings(EurekaExceptionRecord.CallStack, CallStackList);
LogMessage := 'An unhandled exception occured. Here is the CallStack.' + #13#10
+ CallStackList.Text;
finally
CallStackList.Free;
end;
至少从这个起点开始,您应该能够研究公开的功能,记录等。所有信息都是可访问的。
关于delphi - 如何使用EurekaLog将调用堆栈信息传递给异常?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17484107/