Clarion中的异常处理是否存在?

时间:2012-09-27 16:40:33

标签: error-handling clarion

Clarion 8是否提供任何异常处理服务?我知道try / catchtry / catch之类的东西,但是大约10年前就已发布了。我似乎无法找到有关如何从C6到C8中的异常中恢复的任何信息,除非我使用的是Clarion#(又名Clarion.NET),我不是。如果肯定没有像PROP:LastChanceHook这样的话,那么当有异常被抛出时,有没有可用于没有程序崩溃的技巧或黑客,即使它未被处理?

如果有帮助,我使用的是8.0.0.8778版本。

编辑1:

以下是基本程序的一些示例代码,应该说明功能Hook,但是,我无法使其工作。当我运行这个程序时,我看到第一条消息“开始”,但没有任何反应。我试过从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 返回0或1,但这也没有什么不同。每次运行时,我都要进入任务管理器并结束程序的进程,因为它没有被杀死。

{{1}}

1 个答案:

答案 0 :(得分:2)

是的,看一下道具:帮助中的LastChanceHook。它可以为您的需求提供足够的功能。

在其他情况下,此链接的信息也可能有用: http://clarionsharp.com/blog/tracking-down-those-pesky-gpfs/

在C8的下一个公共版本中(目前是2012年9月27日),该异常显示上的按钮(如上面的链接所示)可以进行一些定制。