14.22 標準例外

ここでは、ORBに対して定義される標準例外について説明します。標準例外の例外識別子は、インタフェース仕様に関係なく操作呼出しの結果として返されます。標準例外は、raises式には示されません。

標準例外の処理の複雑さを抑制するには、標準例外のセットを制御可能なサイズに抑えます。この制約により、類似する例外を数多く列挙するのではなく、同等のクラス定義の例外だけに限定することができます。

たとえば、動的なメモリー割当てができないために、様々なポイントで操作呼出しが失敗することがあります。その際、動的なメモリー割当ての失敗に対応する1つの例外が定義されます。つまり、マーシャルまたはマーシャル解除、クライアント、オブジェクト実装ネットワーク・パケットの割り当てなど、メモリー割当ての失敗で例外が発生する様々な要因に対応する、複数の異なる例外を列挙するといったことは行いません。各標準例外には、例外のサブカテゴリを指定するマイナー・コードが含まれています。マイナー・コードの値の割当ては、各ORB実装で行います。

また、標準例外にはcompletion_statusコードも含まれています。このコードは、次のいずれかの値を取ります:

CORBA::COMPLETED_YES
例外が発生する前にオブジェクト実装の処理が完了しています。
CORBA::COMPLETED_NO
例外が発生する前にオブジェクト実装が開始されていませんでした。
CORBA::COMPLETED_MAYBE
実装の完了ステータスが不明です。