5.2 システム例外
オブジェクトインプリメンテーションは,「20. VisiBroker 4.xインタセプタの使用」で説明しているインタセプタを介してシステム例外を発生させることができますが,通常はVisiBroker ORBがシステム例外を発生させます。
主要なCORBA例外の一覧とVisiBroker ORBがその例外を発生させた理由を表5-1に示します。また,CORBA例外のマイナーコードを表5-2に示します。
システム例外 |
マイナーコード |
説明 |
---|---|---|
BAD_PARAM |
1 |
値ファクトリの登録,登録解除,または探索に失敗しました。 |
2 |
RIDがすでにIRに定義されています。 |
|
3 |
名前がすでにIRのコンテキストで使用されています。 |
|
4 |
ターゲットが有効なコンテナではありません。 |
|
5 |
継承されたコンテキストで名前がクラッシュしました。 |
|
6 |
abstractインタフェースのタイプが正しくありません。 |
|
MARSHAL |
1 |
値ファクトリを探索できません。 |
NO_IMPLEMENT |
1 |
ローカル値インプリメンテーションがありません。 |
2 |
値のインプリメンテーションバージョンの互換性がありません。 |
|
BAD_INV_ORDER |
1 |
IRに依存性が存在し,オブジェクトがデストラクトできません。 |
2 |
IR内のデストラクトできないオブジェクトをデストラクトしようとしました。 |
|
3 |
オペレーションがデッドロックになりました。 |
|
4 |
VisiBroker ORBがシャットダウンしました。 |
|
OBJECT_NOT_EXIST |
1 |
活性化されていない(登録解除されている)値をオブジェクトリファレンスとして渡そうとしました。 |
- コードサンプル5-1 SystemExceptionクラス(C++)
class SystemException : public CORBA::Exception { public: static const char*_id; virtual ~SystemException(); CORBA::ULong minor() const; void minor(CORBA::ULong val); CORBA::CompletionStatus completed() const; void completed(CORBA::CompletionStatus status); . . . static SystemException *_downcast(Exception *exc); . . . };
- コードサンプル5-2 SystemExceptionクラス(Java)
public abstract class org.omg.CORBA.SystemException extends java.lang.RuntimeException { protected SystemException(java.lang.String reason, int minor,CompletionStatus completed) {...} public String toString() {...} public CompletionStatus completed; public int minor; }