【发布时间】:2011-05-25 14:29:33
【问题描述】:
美好的一天!
我有一个带有 TaskManager 的多线程应用程序,工作人员......我有一个问题。
线程执行方法如下:
try
task.execute();
except
on E : Exception do
begin
log(e.message);
// callResetThread/disconnectUser
end;
end;
每个任务都有很多访问冲突,运行时错误...尝试-除了某些情况没有 帮助。有什么解决方案可以保护我的程序免受线程错误的影响...
Delphi 7/没有绝地/默认内存管理器
更新
亲爱的朋友们! 我们有一个包含许多第三方组件的代码。该程序在单用户模式下每周引发 1-2 次异常。当我们修改这个程序以在服务器模式下工作时,我们可以有 > 每天 70 个异常(1-2 可能是关键的并且没有被捕获 try ... except ...end) . 我们真的明白我们必须修复所有错误 :-)。但是源代码(带有第三方组件)的大小> 20 Mb ... 我们真的需要您的帮助,我们如何捕获此系统错误(可能与使用系统方法有关)。
【问题讨论】:
-
我怀疑您的“callResetThread/disconnectUser”正在提高 A/V。
-
读取或写入无效内存地址时会发生访问冲突。简单地说,停止这样做!
-
总而言之,你有 100 000 行代码在 9000 个不同的地方抛出异常。也就是说,每 11 行代码中就有 1 行可能引发异常。这以每 20 分钟 1 个异常的速度进行。该代码支持 500 个客户。我不认为你是诚实的,所以我会给-1。祝你找到灵丹妙药。
-
我也投了赞成票。 “告诉我如何隐藏我的问题”不是一个真正的问题。
-
首先杀死你所有的尝试/除了解决方法。然后仔细查看显示的错误对话框中的文本。如果幸运的话,您搜索此文本的字符串部分将在您使用的组件源中显示结果。然后,您将能够找到需要修改的部分组件。甚至更好地用更好的替代品替换该组件。这是我的一台 OPC 服务器的解决方案,该服务器在服务器上繁重工作 2-3 周后出现奇怪错误。这是有缺陷的 AsyncPro TCP 客户端组件。
标签: delphi architecture error-handling try-catch