ページの先頭行へ戻る
Interstage Application Server アプリケーション作成ガイド(CORBAサービス編)
Interstage

9.2.2 ネーミングコンテキストインタフェースの呼び出しで発生する例外

ネーミングサービスは、標準的なシステム例外の他に、以下に示すユーザ例外を発生させます。


(1) NotFound

enum NotFoundReason{
    missing_node, not_context, not_object
};

exception NotFound {
    NotFoundReason why;
    Name rest_of_name;
};

この例外は、バインディング名で指定された各ネームコンポーネントに相当するバインディングが存在しない場合や、バインディングは存在するが要求されたバインディングのタイプと異なる場合に発生します。

whyには、例外の発生原因により以下の値が設定されます。

missing_node

要求されたバインディングがネーミングコンテキストに登録されていません。

not_context

コンテキストタイプのバインディングが期待される処理で、オブジェクトタイプのバインディングが登録されています。

not_object

オブジェクトタイプのバインディングが期待される処理で、コンテキストタイプのバインディングが登録されています。

rest_of_nameメンバには、処理が行われなかった残りのバインディング名が設定されます。rest_of_nameの最初のネームコンポーネントが、問題があったネームコンポーネントとなります。


(2) CannotProceed

exception CannotProceed {
    NamingContext cxt;
    Name rest_of_name;
};

この例外は、ネーミングサービスが何らかの異常により、処理を途中で終了した場合に発生します。

cxtメンバには、すでに処理が正常に行われたネーミングコンテキストが設定されます。
rest_of_nameメンバには、処理されなかった残りのバインディング名が設定されます。
エラーの内容によっては、返されたctxとrest_of_nameを使用して再度処理を行うことができます。


(3) InvalidName

exception InvalidName {};

この例外は、正しくないバインディング名が指定された場合に発生します。

ネームコンポーネントを1つも含まない、長さ0のバインディング名が指定された場合、本例外が発生します。


(4) AlreadyBound

exception AlreadyBound {};

オブジェクトが指定されたバインディング名で、すでにネーミングコンテキストに登録されていることを意味します。


(5) NotEmpty

exception NotEmpty {};

この例外は、削除しようとしたネーミングコンテキストに1つ以上のバインディングが存在する場合に発生します。ネーミングコンテキストを削除するためには、ネーミングコンテキストが空である必要があります。