bea ホーム | 製品 | dev2dev | support | askBEA |
![]() |
![]() |
|
![]() |
e-docs > Tuxedo > Tuxedo CORBA プログラミング・リファレンス > CORBA API |
Tuxedo CORBA プログラミング・リファレンス
|
概要
インデックス入力引数で指定されたパラメータを取得します。
C++ バインディング
CORBA::Any * CORBA::TypeCode::parameter (
CORBA::Long Index) const;
引数
説明
このメンバ関数は、インデックス入力引数で指定されたパラメータを取得します。各種のパラメータの一覧については、表 14-2 を参照してください。
戻り値
メンバ関数が成功した場合、戻り値はインデックス入力引数で指定されたパラメータへのポインタです。
メンバ関数が失敗した場合、例外がスローされます。
Exception メンバ関数
BEA Tuxedo ソフトウェアでは、例外のスローとキャッチをサポートしています。
Caution: 例外コンストラクタを誤って使用すると、データ・メンバが初期化されなくなります。reason フィールド付きで定義する例外は、データ・メンバを初期化するコンストラクタを使用して作成する必要があります。デフォルトのコンストラクタを使用した場合は、そのデータ・メンバは初期化されず、例外の破棄時にシステムによって存在しないデータの破棄が試行されます。
例外を作成する際は、できる限り完全にデータ・フィールドを初期化するコンストラクタを使用するようにしてください。例外を最も簡単に識別するには、OMG IDL 定義を確認します。この定義には、データ・メンバに関する追加の定義が記述されています。
以下では、例外の各メンバ関数について説明します。
const CORBA::SystemException & Se)
CORBA::ULong Minor, CORBA::CompletionStatus Status)
const CORBA::SystemException Se)
CORBA::CompletionStatus Completed)
CORBA::Exception_ptr Exc)
CORBA::Exception_ptr Exc)
標準例外
ここでは、ORB に対して定義される標準例外について説明します。標準例外の例外識別子は、インターフェイス仕様に関係なくオペレーション呼び出しの結果として返されます。標準例外は、raises 式には示されません。
標準例外の処理の複雑さを抑制するには、標準例外のセットを制御可能なサイズに抑えます。この制約により、類似する例外を数多く列挙するのではなく、同等のクラス定義の例外だけに限定することができます。
たとえば、動的なメモリ割り当てができないために、さまざまなポイントでオペレーション呼び出しが失敗することがあります。その際、動的なメモリ割り当ての失敗に対応する 1 つの例外が定義されます。つまり、マーシャルまたはマーシャル解除、クライアント、オブジェクト・インプリメンテーション、ネットワーク・パケットの割り当てなど、メモリ割り当ての失敗で例外が発生するさまざまな要因に対応する、複数の異なる例外を列挙するといったことは行いません。各標準例外には、例外のサブカテゴリを指定するマイナー・コードが含まれています。マイナー・コードの値の割り当ては、各 ORB インプリメンテーションで行います。
また、標準例外には completion_status コードも含まれています。このコードは、次のいずれかの値を取ります。
例外の定義
次の表に、標準例外の説明を示します。クライアントは、この一覧にはないシステム例外の処理を準備しておく必要があります。これは、将来のバージョンの仕様で標準例外の定義が追加される可能性があるため、および ORB インプリメンテーションで非標準のシステム例外が発生する可能性があるためです。例外の詳細については、「『システム・メッセージ』」を参照してください。
表 14-3 defines the exceptions.
オブジェクトが存在しない場合 削除済みのオブジェクトを呼び出すと、常に CORBA::OBJECT_NOT_EXIST 例外が発生します。この場合、「困難な」障害として報告されます。この例外を受け取った場合は、このオブジェクト・リファレンスのすべてのコピーの削除、およびほかの適切な「最終回復」手順の実行が許可 (推奨) されます。 トランザクションの例外 CORBA::TRANSACTION_REQUIRED 例外は、要求では NULL トランザクション・コンテキストを登録したにもかかわらず、アクティブなトランザクションが要求されたことを示します。 CORBA::TRANSACTION_ROLLEDBACK 例外は、要求に関連付けられたトランザクションがロールバック済みか、またはロールバックとしてマークされていたことを示します。したがって、要求されたオペレーションは実行できなかったか、または実行されていません。これは、トランザクションでこれ以降の計算が無意味になるためです。 CORBA::INVALID_TRANSACTION は、要求が無効なトランザクション・コンテキストを登録したことを示します。たとえば、リソースを登録しようとしたときにエラーが発生した場合に、この例外が発生します。
ExceptionList メンバ関数
ExceptionList メンバ関数を使用すると、Request が呼び出されたときに発生するユーザ定義例外すべての TypeCode のリストを、クライアント・アプリケーションまたはサーバ・アプリケーションで提供できるようになります。Request メンバ関数については、「Request メンバ関数」を参照してください。
ExceptionList メンバ関数の C++ へのマッピングは次のとおりです。
class CORBA
{
class ExceptionList
{
public:
Ulong count ();
void add(TypeCode_ptr tc);
void add_consume(TypeCode_ptr tc);
TypeCode_ptr item(Ulong index);
Status remove(Ulong index);
}; // ExceptionList
}// CORBA
![]() |
![]() |
![]() |
![]() |
||
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |