我一直在处理一些非常复杂的遗留代码,这些代码在收集大块数据时会崩溃。我一直无法找到崩溃的确切原因,并且正在尝试不同的方法来解决它或至少很好地恢复。我做的最后一件事是将崩溃的代码封装在
try
...
except
cleanup();
end;
只是为了让它表现得好。但清理工作永远无法完成。什么情况下异常不会被捕获?这可能是由于内存溢出或其他原因造成的,因为应用程序正在收集大量数据。
哦,在添加 try
之前我遇到的异常是“访问冲突”(还有什么?)并且 CPU 窗口指向非常低的地址。任何想法或指示将不胜感激!
最佳答案
“非常低的地址”可能意味着有人试图调用一个并不真正存在的对象上的虚拟方法(即“nil”)。例如:
TStringList(nil).Clear;
不过,第一部分非常神秘。我不知道这是怎么发生的。
我认为你应该尝试用 madExcept 捕获该异常。它从来没有让我失望过。 (免责声明:我没有使用 D7。)
关于Delphi 7 未捕获异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/186718/