1

Clarion 8 は例外処理のために何かを提供しますか? Clarion 5の時点では、次のようなものはサポートされていませんでしtry / catchたが、それはほぼ10年前にリリースされました. 私が使用していない Clarion# (別名 Clarion.NET) を使用していない限り、C6 から C8 の例外から回復する方法に関する情報が見つからないようです。のようなもの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
4

1 に答える 1

2

はい、ヘルプのprop:LastChanceHookをご覧ください。それはあなたのニーズに十分な機能を提供するかもしれません。

その他の場合、このリンクの情報も役立つ場合があります:http: //clarionsharp.com/blog/tracking-down-those-pesky-gpfs/

C8の次のパブリックビルド(現在は2012年9月27日)では、その例外表示のボタン(上のリンクに表示)を少しカスタマイズできます。

于 2012-09-27T23:09:17.163 に答える