2012-09-27 21 views
1

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 
+0

我知道Clarion.NET支持異常處理。 –

+0

@JustinSkiles - 我提到我沒有使用,只是筆直的Clarion 8. Clarion#是Clarion.NET的同義詞嗎? – DanM7

+0

我這麼認爲。抱歉。 –

回答

2

是的,看看prop:LastChanceHook的幫助。它可以爲您的需求提供足夠的功能。

在其他情況下,在這個環節的信息也可能是有用的: http://clarionsharp.com/blog/tracking-down-those-pesky-gpfs/

在C8的下一個公開版本(這是目前2012年9月27日),該異常顯示器上的按鈕(在所示上面的鏈接)可以自定義一下。

+0

+1僅用於迴應Clarion問題。我會盡快嘗試一下C8的下一個版本。如果真的有幫助,那麼我會發布我的解決方案,並將您標記爲已回答。 – DanM7

+0

我們沒有多少人離開,必須堅持到一起:) –

+0

我試過PROP:LastChanceHook,但我似乎無法得到它的工作。我更新了我的原始問題,以顯示一個似乎不適合我的示例程序。如果您對此有任何想法,我會非常感謝您的意見。 – DanM7