Error handling Clarion中是否存在异常处理?

Error handling Clarion中是否存在异常处理?,error-handling,clarion,Error Handling,Clarion,Clarion 8是否提供异常处理功能?我知道类似于try/catch的东西,但那是大约10年前发布的。我似乎找不到关于如何从C6到C8的异常中恢复的任何信息,除非我使用的是Clarion#(又名Clarion.NET),而我不是。如果绝对没有类似于try/catch,那么在抛出异常时,即使异常未经处理,是否有任何技巧或黑客可以用来避免程序崩溃 如果有帮助,我使用的是8.0.0.8778版 编辑1: 下面是一个基本程序的一些示例代码,应该可以说明特性PROP:LastChanceHook,但是,

Clarion 8是否提供异常处理功能?我知道类似于
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

是的,请看帮助中的prop:LastChanceHook。它可以提供足够的功能满足您的需要

在其他情况下,此链接中的信息也可能有用:


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

我知道Clarion.NET支持异常处理。@JustinSkiles-我说过我不使用它,只使用Clarion 8。Clarion是Clarion.NET的同义词,对吗?@Justinskilles-没问题。谢谢你的评论。如果你真的找到了一条路,别忘了这篇文章+我只是为了回答一个响亮的问题。我会尽快尝试它,只要我能得到下一个版本的C8。如果真的有帮助的话,到时候我会发布我的解决方案,并将您标记为已回答。我尝试了PROP:LastChanceHook,但似乎无法让它发挥作用。我更新了我的原始问题,以显示一个似乎不适合我的示例程序。如果您对此有任何想法,我将非常感谢您的输入。我在9.0.9632的帮助中尝试了该示例,但它也不起作用。输入他们的来源和结果为PTS 39599。我刚刚更新了问题,但FWIW我正在运行8.0.0.8778。我将此标记为已回答,因为我从其他一些Clarion开发人员那里听说,这应该可以工作,但在Clarion的较新版本中不起作用。据推测SV正在进行某种修复。再次感谢你找到这个。