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