Interstage Application Server アプリケーション作成ガイド (CORBAサービス編)
目次 索引 前ページ次ページ

第9章 ネーミングサービスのプログラミング> 9.2 ネーミングコンテキストインタフェース

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つ以上のバインディングが存在する場合に発生します。ネーミングコンテキストを削除するためには、ネーミングコンテキストが空であることが必要です。


目次 索引 前ページ次ページ

All Rights Reserved, Copyright(C) 富士通株式会社 2005