Exception |
例外に関するインタフェースです。以下にクラス階層を示します。
CORBA::Exception // すべての例外の基底クラス | +----CORBA::SystemException // CORBA標準例外の基底クラス | | | +----CORBA::UNKNOWN : : : | | : | +----CORBA::DATA_CONVERSION | +----CORBA::UserException // ユーザ例外の基底クラス | +----CORBA::UnknownUserException : :
実際に例外を使うときは、CORBA::SystemExceptionまたはCORBA::UserExceptionの派生クラスを利用します。派生したクラスの使い方はそれぞれCORBA::SystemException,
CORBA::UserExceptionと同じですので、CORBA標準例外やユーザ例外を利用するときの参考にしてください。なお、ユーザ定義の例外クラスはIDL定義にしたがって、IDLコンパイラが自動的に生成します。
例外の判定についての詳しい説明はC++マッピングの「例外」 および [ アプリケーション開発ガイド(CORBA) > 1. CORBA アプリケーション > 1.2. プログラミング・開発ガイド > 1.2.1. WebOTX AS CORBAアプリケーション > 1.2.1.6. C++言語を用いたクライアントアプリケーションの作成 > 例外処理について] を参照してください。
4.4.1.19. CORBA::Exceptionクラス |
すべての例外が継承しているクラスです。
Exception(const CORBA::Exception&) | コピーコンストラクタ |
~Exception | デストラクタ |
operator=(const CORBA::Exception&) | 代入オペレータ |
_raise | 自分自身をthrowする |
_dump | 例外情報のファイルへの書き出し |
__name | 例外クラス名を得る |
__id | 例外のリポジトリIDを得る |
4.4.1.20. CORBA::SystemExceptionクラス |
すべてのCORBA標準例外が継承しているクラスです。このクラスはCORBA::Exceptionを継承しています。
CORBA::SystemExceptionを継承したクラスについては「例外クラス名」を参照してください。
CORBA::SystemExceptionはマイナーコード(CORBA::ULong)と呼び出したオペレーションの完了状況(CORBA::CompletionStatus)を持っています。CORBA::CompletionStatusには以下に示す種類があります。
CORBA::COMPLETED_YES | オペレーション完了後に例外が発生した。 |
CORBA::COMPLETED_NO | オペレーションが完了する前に例外が発生した。 |
CORBA::COMPLETED_MAYBE | オペレーションが完了したかどうかわからない。 |
SystemException | デフォルトコンストラクタ |
SystemException(const CORBA::SystemException&) | コピーコンストラクタ |
SystemException(CORBA::ULong, CORBA::CompletionStatus) | 初期化を行うコンストラクタ |
~SystemException() | デストラクタ |
operator=(const CORBA::SystemException&) | 代入オペレータ |
minor | マイナーコードを取得する |
minor(CORBA::ULong) | マイナーコードを設定する |
completed | 例外発生状況を取得する |
completed(CORBA::CompletionStatus) | 例外発生状況を設定する |
_narrow | 派生クラスに変換する |
_dump | 例外情報のファイルへの書き出し |
4.4.1.xx. CORBA::SystemExceptionに関連した関数 |
CORBA::SystemException発生時のエラー出力を支援する関数です。
Ob_SysExcepReason | 例外の詳細を得る |
4.4.1.21. CORBA::UserExceptionクラス |
すべてのユーザ例外が継承しているクラスです。このクラスはCORBA::Exceptionを継承しています。
IDLでexception定義を行うと、IDLコンパイラはこのクラスを継承したクラスを出力します。
UserException | デフォルトコンストラクタ |
UserException(const CORBA::UserException&) | コピーコンストラクタ |
~UserException | デストラクタ |
operator=(const CORBA::UserException&) | 代入オペレータ |
_narrow | 派生クラスに変換する |
4.4.1.22. CORBA::UnknownUserExceptionクラス |
CORBA::UnknownUserExceptionは動的起動インタフェース(Dynamic Invocation Interface : DII)による呼び出しのとき、ユーザ例外情報を取り出すためのクラスです。CORBA::UnknownUserExceptionのインスタンスはライブラリによって自動的に作成されます。このクラスはCORBA::UserExceptionを継承しています。
exception | 不明なユーザ例外の情報を取り出す |
_narrow | 派生クラスに変換する |
CORBA::Exception::Exception(const CORBA::Exception&)
- コピーコンストラクタ
#include <orb.h> CORBA::Exception::Exception(const CORBA::Exception& x);
CORBA::Exceptionのインスタンスを生成し、xのメンバ変数が保持している値をコピーします。
ありません。
起こりません。
CORBA::Exception::~Exception - デストラクタ
#include <orb.h> CORBA::Exception::~Exception();
CORBA::Exceptionのインスタンスを削除します。
ありません。
起こりません。
CORBA::Exception::operator=(const CORBA::Exception&) - 代入オペレータ
#include <orb.h> CORBA::Exception& CORBA::Exception::operator=(const CORBA::Exception& x);
右辺のメンバ変数が保持している値をメンバ変数に代入し、自分自身への参照を返します。
自分自身への参照を返します。
起こりません。
CORBA::Exception::_raise - 自分自身をthrowする
#include <orb.h> virtual void CORBA::Exception::_raise() = 0;
個々の例外のインスタンスが、自分自身をthrowするためのvirtual関数です。
個々の例外では、下記のとおりオーバーライドします。
// C++ class SomeException : public CORBA::Exception { ... void _raise(); }; void SomeException::_raise() { throw *this; }
ありません。
起こりません。
CORBA::Exception::_dump - 例外情報のファイルへの書き出し
#include <orb.h> void CORBA::Exception::_dump(FILE* fp);
例外情報をfpで指定したファイルに書き出します。ユーザ例外の場合、例外情報の書き出しは以下の形式で行われます。
"例外名 exception occurred."
本関数は仮想関数です。インスタンスの実体がCORBA::SystemException型のときの出力形式については、CORBA::SystemException::_dumpを参照してください。
ありません。
起こりません。
CORBA::Exception::__name - 例外クラス名を得る
#include <orb.h> const char* CORBA::Exception::__name();
自分自身が保持している例外クラス名を返します。たとえば、CORBA::Exceptionの派生クラスであるCORBA::UNKNOWNであれば"CORBA::UNKNOWN"という文字列が返ります。
例外クラス名を返します。
起こりません。
CORBA::Exception::__id - 例外のリポジトリIDを得る
#include <orb.h> const char* CORBA::Exception::__id();
自分自身のリポジトリIDを文字列として返します。たとえば、CORBA::Exceptionの派生クラスであるCORBA::UNKNOWNであれば"IDL:CORBA/UNKNOWN:1.0"という文字列が返ります。
自分自身のリポジトリIDを返します。
起こりません。
CORBA::SystemException::SystemException - デフォルトコンストラクタ
#include <orb.h> CORBA::SystemException::SystemException();
CORBA::SystemExceptionのインスタンスを生成します。マイナーコードには0が設定されます。また、例外発生状況を表すフラグにはCORBA::COMPLETED_NOが設定されます。
ありません。
起こりません。
CORBA::SystemException::SystemException(const CORBA::SystemException&)
- コピーコンストラクタ
#include <orb.h> CORBA::SystemException::SystemException( const CORBA::SystemException& x );
CORBA::SystemExceptionのインスタンスを生成し、xのメンバ変数が保持している値をコピーします。
ありません。
起こりません。
CORBA::SystemException::SystemException(CORBA::ULong, CORBA::CompletionStatus)
- 初期化を行うコンストラクタ
#include <orb.h> CORBA::SystemException::SystemException( CORBA::ULong minor, CORBA::CompletionStatus status );
CORBA::SystemExceptionのインスタンスを生成し、minor, statusの値で初期化します。
minorは例外のマイナーコードです。マイナーコードについての詳しい説明は「例外のマイナーコード一覧」を参照してください。
statusは例外が発生した状況を表すフラグです。フラグの種類については「CORBA::CompletionStatusの種類」を参照してください。
実際にインスタンスを生成するときは、 CORBA::SystemExceptionの派生クラス のインスタンスを生成します。以下にサーバ側のメソッドがCORBA::BAD_PARAM例外を返すときの例を示します。
void user_def_impl::op(..., CORBA::Environment& env) { // ユーザが定義したオペレーション実装部 ... if(...) { // 例外発生(仮にタイプコードが不正だったとする) throw CORBA::BAD_PARAM(EMinor_TYPECODE_UNMATCHED, CORBA::COMPLETED_NO); } ... }
ありません。
起こりません。
CORBA::SystemException::~SystemException - デストラクタ
#include <orb.h> CORBA::SystemException::~SystemException();
CORBA::SystemExceptionのインスタンスを削除します。
ありません。
起こりません。
CORBA::SystemException::operator=(const CORBA::SystemException&)
- 代入オペレータ
#include <orb.h> CORBA::SystemException& CORBA::SystemException::operator=(const CORBA::SystemException& x);
右辺のメンバ変数が保持している値をメンバ変数に代入し自分自身への参照を返します。
自分自身への参照を返します。
起こりません。
CORBA::SystemException::minor - マイナーコードを取得する
#include <orb.h> CORBA::ULong CORBA::SystemException::minor() const;
CORBA::SystemExceptionのインスタンスが保持しているマイナーコードを返します。マイナーコードはCORBA::ULong型です。
マイナーコードについての詳しい説明は「例外のマイナーコード一覧」を参照してください。
マイナーコードが返ります。
起こりません。
CORBA::SystemException::minor(CORBA::ULong) - マイナーコードを設定する
#include <orb.h> void CORBA::SystemException::minor(CORBA::ULong val);
CORBA::SystemExceptionのインスタンスにマイナーコードvalを設定します。
マイナーコードについての詳しい説明は「例外のマイナーコード一覧」を参照してください。
ありません。
起こりません。
CORBA::SystemException::completed - 例外発生状況を取得する
#include <orb.h> CORBA::CompletionStatus CORBA::SystemException::completed() const;
CORBA::SystemExceptionのインスタンスから、例外が発生したときの状況を表すフラグを取得します。
CORBA::CompletionStatusが返す値は「CORBA::CompletionStatusの種類」を参照してください。
例外が発生したときの状況を表すフラグが返ります。
起こりません。
CORBA::SystemException::completed(CORBA::CompletionStatus)
- 例外発生状況を設定する
#include <orb.h> void CORBA::SystemException::completed(CORBA::CompletionStatus val);
CORBA::SystemExceptionのインスタンスに、例外が発生したときの状況を表すフラグvalを設定します。
valに指定する値は「CORBA::CompletionStatusの種類」を参照してください。
ありません。
起こりません。
CORBA::SystemException::_narrow - 派生クラスに変換する
#include <orb.h> CORBA::SystemException* CORBA::SystemException::_narrow(CORBA::Exception* p);
CORBA::Exception型からCORBA::SystemException型への変換を試みます。変換に成功したときはpをCORBA::SystemException型に変換したポインタが返ります。そうでなければヌル・ポインタが返ります。
変換に成功するかどうかを調べることにより、CORBA標準例外かユーザ例外かを判断することができます。
CORBA::SystemException型への_narrowオペレーションに成功した場合、その派生クラスの_narrowオペレーションを呼び出すことにより、より詳細な判定をすることができます。
CORBA::SystemException型のポインタが返ります。
起こりません。
CORBA::SystemException::_dump - 例外情報のファイルへの書き出し
#include <orb.h> void CORBA::SystemException::_dump(FILE* fp);
例外情報をfpで指定したファイルに書き出します。例外情報の書き出しは以下の形式で行われます。
"例外名 exception occurred. minor = マイナーコード"
ありません。
起こりません。
CORBA::UserException::UserException - デフォルトコンストラクタ
#include <orb.h> CORBA::UserException::UserException();
CORBA::UserExceptionのインスタンスを生成します。
ありません。
起こりません。
CORBA::UserException::UserException(const CORBA::UserException&)
- コピーコンストラクタ
#include <orb.h> CORBA::UserException::UserException( const CORBA::UserException& x );
CORBA::UserExceptionのインスタンスを生成し、xのメンバ変数が保持している値をコピーします。
ありません。
起こりません。
CORBA::UserException::~UserException - デストラクタ
#include <orb.h> CORBA::UserException::~UserException();
CORBA::UserExceptionのインスタンスを削除します。
ありません。
起こりません。
CORBA::UserException::operator=(const CORBA::UserException&) - 代入オペレータ
#include <orb.h> CORBA::UserException& CORBA::UserException::operator=(const CORBA::UserException& x);
自分自身への参照を返します。
IDLコンパイラが自動生成するCORBA::UserExceptionの派生クラスでは、右辺のメンバ変数が保持している値をメンバ変数に代入してから自分自身への参照を返します。
自分自身への参照を返します。
起こりません。
CORBA::UserException::_narrow - 派生クラスに変換する
#include <orb.h> CORBA::UserException* CORBA::UserException::_narrow(CORBA::Exception* p);
CORBA::Exception型からCORBA::UserException型への変換を試みます。変換に成功したときはpをCORBA::UserException型に変換したポインタが返ります。そうでなければヌル・ポインタが返ります。
変換に成功するかどうかを調べることにより、CORBA標準例外かユーザ例外かを判断することができます。
CORBA::UserException型への_narrowオペレーションに成功した場合、その派生クラスの_narrowオペレーションを呼び出すことにより、より詳細な判定をすることができます。
CORBA::UserException型のポインタが返ります。
起こりません。
CORBA::UnknownUserException::exception - 不明なユーザ例外の情報を取り出す
#include <orb.h> CORBA::Any& CORBA::UnknownUserException::exception();
コンパイル時に不明だったユーザ例外をCORBA::Any型で返します。返されたanyを解析することで実際の例外情報を取り出すことができます。
例外情報がCORBA::Any型で返されます。
起こりません。
CORBA::UnknownUserException::_narrow - 派生クラスに変換する
#include <orb.h> CORBA::UnknownUserException* CORBA::UnknownUserException::_narrow(CORBA::Exception* p);
CORBA::Exception型からCORBA::UnknownUserException型への変換を試みます。変換に成功したときはpをCORBA::UnknownUserException型に変換したポインタが返ります。そうでなければヌル・ポインタが返ります。
変換に成功するかどうかを調べることにより、CORBA::UnknownUserException例外かどうかを判断することができます。
CORBA::UnknownUserException型のポインタが返ります。
起こりません。
Ob_SysExcepReason - 例外の詳細を得る
#include <orb.h> const char* Ob_SysExcepReason(CORBA::ULong* minor);
minorに相当する例外情報の詳細を文字列で返します。返す文字列のフォーマットは以下のとおりです。
minor='minor' reason='例外情報の詳細'以下に使用例を示します。
[C++ソースコード] try { ... } catch (CORBA::SysteException& se) { // SystemException occurred printf("%s : %s\n", se.__name(), Ob_SysExcepReason(se.minor())); ... } [出力結果例] CORBA::NO_RESPONSE : minor=1080 reason=Implementation not found
minorがマイナーコードの範囲内のときは、例外情報の詳細を表す文字列へのポインタが返ります。それ以外のときは、空文字列("")が返ります。
起こりません。
戻り値が指している領域を解放してはいけません。