Clarion 8是否提供異常處理功能?我知道as of Clarion 5 there was no support對於像try/catch
這樣的東西,但是這是在10年前發佈的。除非我使用Clarion#(又名Clarion.NET),否則我似乎無法找到關於如何從C6到C8的異常中恢復的任何信息。如果絕對沒有像try/catch
這樣的東西,有沒有什麼技巧或者黑客可以用來在程序崩潰的時候拋出一個異常,即使它沒有被處理?Clarion中的異常處理是否存在?
如果有幫助,我使用的版本是8.0.0.8778。
編輯1:
這裏是一個基本的程序,按理說應該說明的功能PROP:LastChanceHook
一些示例代碼,但是,我不能得到它的工作。當我運行這個程序時,我看到第一條消息「開始」,但沒有任何反應。我已經嘗試從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
我知道Clarion.NET支持異常處理。 –
@JustinSkiles - 我提到我沒有使用,只是筆直的Clarion 8. Clarion#是Clarion.NET的同義詞嗎? – DanM7
我這麼認爲。抱歉。 –