我有一个线程化的应用程序,出于某种目的,我想将捕获到的异常的调用堆栈信息传递给新的自定义异常:

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/

10-10 09:03