13.1.11 例外
OMG IDLの例外は、C++のクラスにマッピングされます。C++クラスには、次のものが格納されています。
- コンストラクタ
- デストラクタ
- 例外型を判別する静的
_narrow関数
生成されるクラスは可変長構造体と似ていますが、初期化を簡単にするための追加コンストラクタ、およびUserExceptionの型を判別するための静的_narrowメンバー関数が含まれています。
たとえば、次のOMG IDL定義を考えます:
// OMG IDL
module INVENT
{
exception NonExist
{
ID BadId;
};
};この定義は、次のようにC++にマッピングされます:
// C++
class INVENT
{
. . .
class NonExist : public CORBA::UserException
{
public:
static NonExist * _narrow(CORBA::Exception_ptr);
NonExist (ID _BadId);
NonExist ();
NonExist (const NonExist &);
~NonExist ();
NonExist & operator=(const NonExist &);
void _raise ();
ID BadId;
};
};Exceptionクラスの属性(データ・メンバー)はパブリックなので、直接アクセスできます。
親トピック: マッピング