Clarion 8 是否提供任何异常处理功能?我知道从 Clarion 5 开始,不支持类似的东西,try / catch
但它是在大约 10 年前发布的。我似乎找不到任何关于如何从 C6 到 C8 中的异常恢复的信息,除非我使用的是 Clarion#(又名 Clarion.NET),但我不是。如果绝对没有类似的东西try / catch
,是否有任何技巧或技巧可以用来在抛出异常时不导致程序崩溃,即使它没有得到处理?
如果有帮助,我使用的是 8.0.0.8778 版本。
编辑1:
这是一个基本程序的一些示例代码,应该可以说明该功能PROP:LastChanceHook
,但是,我无法让它工作。当我运行这个程序时,我看到第一条消息“开始”,但是什么也没发生。我试过从返回 0 或 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