Clarion 8提供了什么异常处理吗?我知道截至克拉里翁5号,没有人支持类似try / catch之类的东西,但那是在近10年前发布的。我似乎找不到任何关于如何从C6中的异常恢复到C8的信息,除非我使用的是Clarion# (又名Clarion.NET),而我不是。如果绝对没有类似于try / catch的东西,那么在抛出异常时,是否有任何技巧或黑客可以用来避免程序崩溃,即使异常没有得到处理?
如果有帮助,我使用的是8.0.0.8778版本。
编辑1:
下面是一些基本程序的示例代码,这些代码应该说明特性PROP:LastChanceHook,但是,我无法让它工作。当我运行这个程序时,我看到了第一个消息"Start",但是什么也没发生。我尝试从Hook返回0或1,但这也没有什么区别。每次我运行这个程序时,我都必须转到任务管理器上,结束这个程序的进程,因为它没有被杀死。
PROGRAM
INCLUDE('CWEXCPT.INT'), ONCE
MAP
Hook(*ICWExceptionInfo), LONG
Test(LONG,LONG)
END
CODE
MESSAGE('[Sample] Start')
SYSTEM{PROP:LastChanceHook} = ADDRESS(Hook)
Test(10, 0) ! Intentionally causes an exception
MESSAGE('[Sample] After Test')
RETURN ! Tried removing this, no difference
Hook PROCEDURE(*ICWExceptionInfo info)
CODE
MESSAGE('[Sample] Start Hook')
IF info &= NULL THEN RETURN 0 END
Message('An exception!')
RETURN 1 ! 0 = don't kill, anything > 0 = tell RTL to kill the thread
Test PROCEDURE (LONG a, LONG b)
CODE
a %= b发布于 2012-09-27 23:09:17
是的,看看道具:帮助中的LastChanceHook。它可以提供足够的功能来满足您的需要。
在其他情况下,此链接上的信息也可能有用:http://clarionsharp.com/blog/tracking-down-those-pesky-gpfs/
在下一次C8的公开构建中(目前是2012年9月27日),该异常显示上的按钮(如上面的链接所示)可以进行一些定制。
https://stackoverflow.com/questions/12626159
复制相似问题