bea ホーム | 製品 | dev2dev | support | askBEA
BEA Logo Tuxedo
 ドキュメントのダウンロード   サイトマップ   用語集 
検索
0

Tuxedo CORBA プログラミング・リファレンス

 Previous Next Contents View as PDF  

CORBA::TypeCode::parameter

概要

インデックス入力引数で指定されたパラメータを取得します。

C++ バインディング

CORBA::Any * CORBA::TypeCode::parameter (
CORBA::Long Index) const;

引数

Index

パラメータ・リストのインデックス。取得するパラメータを指定するのに使用します。

説明

このメンバ関数は、インデックス入力引数で指定されたパラメータを取得します。各種のパラメータの一覧については、表 14-2 を参照してください。

戻り値

メンバ関数が成功した場合、戻り値はインデックス入力引数で指定されたパラメータへのポインタです。

メンバ関数が失敗した場合、例外がスローされます。

 


Exception メンバ関数

BEA Tuxedo ソフトウェアでは、例外のスローとキャッチをサポートしています。

Caution: 例外コンストラクタを誤って使用すると、データ・メンバが初期化されなくなります。reason フィールド付きで定義する例外は、データ・メンバを初期化するコンストラクタを使用して作成する必要があります。デフォルトのコンストラクタを使用した場合は、そのデータ・メンバは初期化されず、例外の破棄時にシステムによって存在しないデータの破棄が試行されます。

例外を作成する際は、できる限り完全にデータ・フィールドを初期化するコンストラクタを使用するようにしてください。例外を最も簡単に識別するには、OMG IDL 定義を確認します。この定義には、データ・メンバに関する追加の定義が記述されています。

以下では、例外の各メンバ関数について説明します。

CORBA::SystemException::SystemException ()

CORBA::SystemException クラスのデフォルトのコンストラクタです。マイナー・コードは 0 (ゼロ) に初期化され、完了ステータスは COMPLETED_NO に設定されています。

CORBA::SystemException::SystemException (
const CORBA::SystemException & Se)

CORBA::SystemException クラスのコピー・コンストラクタです。

CORBA::SystemException::SystemException(
CORBA::ULong Minor, CORBA::CompletionStatus Status)

CORBA::SystemException クラスのコンストラクタで、マイナー・コードと完了ステータスを設定します。

各引数について次に説明します。

Minor

Exception オブジェクトのマイナー・コード。minor フィールドはインプリメンテーション固有の値で、ORB が例外を識別するために使用します。BEA Tuxedo の minor フィールドの定義は、orbminor.h ファイルにあります。

Status

Exception オブジェクトの完了ステータス。値は次のとおりです。

CORBA::COMPLETED_YES

CORBA::COMPLETED_NO

CORBA::COMPLETED_MAYBE

CORBA::SystemException::~SystemException ()

CORBA::SystemException クラスのデストラクタです。Exception オブジェクトが使用していたメモリを解放します。

CORBA::SystemException CORBA::SystemException::operator =
const CORBA::SystemException Se)

この代入演算子は、ソース例外から例外情報をコピーします。Se 引数には、コピー元の SystemException オブジェクトを指定します。

CORBA::CompletionStatus CORBA::SystemException::completed()

この例外の完了ステータスを返します。

CORBA::SystemException::completed(
CORBA::CompletionStatus Completed)

この例外の完了ステータスを設定します。Completed 引数には、この例外の完了ステータスを指定します。

CORBA::ULong CORBA::SystemException::minor()

この例外のマイナー・コードを返します。

CORBA::SystemException::minor (CORBA::ULong Minor)

この例外のマイナー・コードを設定します。minor 引数には、この例外の新しいマイナー・コードを指定します。minor フィールドはインプリメンテーション固有の値で、アプリケーションが例外を識別するために使用します。

CORBA::SystemException * CORBA::SystemException::_narrow (
CORBA::Exception_ptr Exc)

指定の例外がシステム例外に限定可能かどうかを判別します。Exc 引数には、限定する例外を指定します。

指定の例外がシステム例外の場合、システム例外へのポインタが返されます。指定の例外がシステム例外ではない場合、0 (ゼロ) が返されます。

CORBA::UserException * CORBA::UserException::_narrow(
CORBA::Exception_ptr Exc)

指定の例外がユーザ例外に限定可能かどうかを判別します。Exc 引数には、限定する例外を指定します。

指定の例外がユーザ例外の場合、ユーザ例外へのポインタが返されます。指定の例外がユーザ例外ではない場合、0 (ゼロ) が返されます。

 


標準例外

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

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

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

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

CORBA::COMPLETED_YES

例外が発生する前にオブジェクト・インプリメンテーションの処理が完了しています。

CORBA::COMPLETED_NO

例外が発生する前にオブジェクト・インプリメンテーションが開始されていませんでした。

CORBA::COMPLETED_MAYBE

インプリメンテーションの完了ステータスが不明です。

例外の定義

次の表に、標準例外の説明を示します。クライアントは、この一覧にはないシステム例外の処理を準備しておく必要があります。これは、将来のバージョンの仕様で標準例外の定義が追加される可能性があるため、および ORB インプリメンテーションで非標準のシステム例外が発生する可能性があるためです。例外の詳細については、「『システム・メッセージ』」を参照してください。

表 14-3 defines the exceptions.

表 14-3 例外の定義

例外

説明

CORBA::UNKNOWN

未知の例外。

CORBA::BAD_PARAM

無効なパラメータが受け渡されました。

CORBA::NO_MEMORY

動的メモリ割り当てが異常終了しました。

CORBA::IMP_LIMIT

インプリメンテーション制限に違反しました。

CORBA::COMM_FAILURE

通信障害。

CORBA::INV_OBJREF

無効なブジェクト・リファレンスです。

CORBA::NO_PERMISSION

試行されたオペレーションのパーミッションが存在しません。

CORBA::INTERNAL

ORB 内部エラー。

CORBA::MARSHAL

パラメータまたは結果のマーシャル時にエラーが発生しました。

CORBA::INITIALIZE

ORB 初期化障害。

CORBA::NO_IMPLEMENT

オペレーションのインプリメンテーションが利用できません。

CORBA::BAD_TYPECODE

タイプ・コードが間違っています。

CORBA::BAD_OPERATION

無効なオペレーションです。

CORBA::NO_RESOURCES

要求を処理するためのリソースが不足しています。

CORBA::NO_RESPONSE

要求に対する応答がまだ利用できません。

CORBA::PERSIST_STORE

永続ストレージの障害。

CORBA::BAD_INV_ORDER

ルーチン呼び出しが順不同です。

CORBA::TRANSIENT

一時障害のため、要求が再度呼び出されます。

CORBA::FREE_MEM

メモリを解放できません。

CORBA::INV_IDENT

無効な識別子構文です。

CORBA::INV_FLAG

無効なフラグが指定されています。

CORBA::INTF_REPOS

インターフェイス・リポジトリへのアクセス時にエラーが発生しました。

CORBA::BAD_CONTEXT

コンテキスト・オブジェクトの処理中にエラーが発生しました。

CORBA::OBJ_ADAPTER

オブジェクト・アダプタによってエラーが検出されました。

CORBA::DATA_CONVERSION

データ変換エラー。

CORBA::OBJECT_NOT_EXIST

オブジェクトが存在しません。リファレンスを削除してください。

CORBA::TRANSACTION_REQUIRED

トランザクションが必要です。

CORBA::TRANSACTION_ROLLEDBACK

トランザクションがロールバックされました。

CORBA::INVALID_TRANSACTION

無効なトランザクションです。


 

オブジェクトが存在しない場合

削除済みのオブジェクトを呼び出すと、常に 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

 

Back to Top Previous Next
Contact e-docsContact BEAwebmasterprivacy