次に示す例では、すべての ERROR 条件は、開始ブロック内で処理され、 FINISH 条件は、システムによって処理され、その他のすべての条件は、 handle_All_Others という名前のルーチンの呼び出しによって処理さ れることになります。
on error begin;
·
·
·
end; on finish system; on anycondition call Handle_all_others;
条件が発生すると、呼び出しスタックが調べられ (逆方向に)、 その条件の ON ユニットを含むブロックが検索されます。 そのような ON ユニット、または ON ANYCONDITION ON ユニットを 含む最初のブロックが検出されると、検索は停止します。 そのような ON が検出されず、その条件が暗黙アクションによって ERROR に プロモートされる場合は (またその場合に限り)、スタックが再度調べられ、ON ERROR ON ユニットが検索されます。
ANYCONDITION ON ユニット内で ONCONDID 組み込み関数を使用して、どの条件が処理 されているかを判別することができます。また、ONCONDCOND 組み込み関数を使用 すれば、CONDITION 条件の名前を判別することができます。 ONFILE のようなほかの ON 組み込み関数を使用すれば、 正確な原因を判別し、その他の関連する情報を知ることができます。 これらの組み込み関数については、組み込み関数、疑似変数、およびサブルーチンにまとめてあります。
|