我有一个ocx,在vfp9中调用其中一个方法时,有时会导致“内部应用程序错误”。
我尝试过使用错误并尝试/ catch。对于两者,而不是得到错误,我得到Microsoft Visual ForPro遇到问题,需要关闭....发送错误报告/不发送对话框。
这就是我的代码。
关于错误代码(请注意,我从未看到等待窗口):
LOCAL lcOnError
PUBLIC glErrorResult
glErrorResult = .F.
lcOnError = ON('ERROR')
ON ERROR glErrorResult = .T.
This.oOCXControl.Method()
IF glErrorResult
WAIT WINDOW 'error'
ENDIF
ON ERROR &lcOnError
RELEASE glErrorResult
尝试/捕获代码(再次,我从未看到等待窗口):
Local oError as Exception
Try
This.oOCXControl.Method()
Catch to oError When .T.
WAIT WINDOW 'error'
EndTry
还有什么我可以尝试处理错误以防止我的应用崩溃吗?
答案 0 :(得分:0)
所以你有一个行为不当的OCX控件。我假设您已经考虑过将其替换为其他供应商的控制或检查更新等选项。至于能够处理错误,我不知道你还没有尝试过任何你可以做的事情。听起来这种控制是如此的偏离,它正在摧毁VFP继续执行的能力。
考虑如何使用控件并查找可能违反制造商规则的地方。特别是寻找可能鼓励控制泄漏内存的地方。很可能在控制中存在一个问题,即在命中这行代码时最终爆发。
例如,我有一个旧网格控件的经验,它有一定的内存限制。如果尝试向网格添加太多项目,它不会抛出错误,而是只是将内存泄漏到VFP的处理空间中并最终将应用程序关闭。简单的答案是不要尝试在网格中添加大量项目。
答案 1 :(得分:0)
您是否考虑过运行方法on a different thread?它可能至少会阻止您的应用崩溃。