gpt4 book ai didi

delphi - MadExcept for delphi 在应用程序崩溃后不打印堆栈跟踪

转载 作者:行者123 更新时间:2023-12-02 03:05:11 24 4
gpt4 key购买 nike

详细问题:

我们正在尝试在 Delphi 应用程序中使用 MadExcept 捕获堆栈跟踪 (bugreport.txt),其中线程因 fatal error 而导致应用程序崩溃。但 MadExcept 在应用程序崩溃后不会打印任何堆栈跟踪。有什么想法吗?

我们的准则:

procedure TMainForm.WSServerExecute(AContext: TIdContext);
begin
try
HTMLExecute(AContext);
except
on E: Exception do
begin
if not(E is EIdException) then
begin
LogData.AddError('HTMLExecute error: ' + E.Message);
madExcept.HandleException;
end;
raise;
end;
end;
end;

当客户端与服务器建立 Websocket 连接时,将调用此过程。这是由 Indy TCPServer 组件产生的线程。 HTMLExecute 函数负责在客户端和服务器之间读取和写入数据包。我将其包装在 try.. except block 中以捕获任何异常。 LogData 行将错误记录到错误日志中,madExcept 行应该创建 bugreport.txt 文件。 Raise 行将异常传递回 Indy,以便它知道发生了 fatal error 并将中止线程。

最佳答案

madExcept 不处理异常的原因是因为您已经使用 on E:Exception do 捕获了它并自行处理它。只需给 madExcept.HandleExcept 异常来处理它:

madExcept.HandleException(etNormal, E);

关于delphi - MadExcept for delphi 在应用程序崩溃后不打印堆栈跟踪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18436853/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com