2.10.1 ユーザ定義例外

ユーザ定義例外は,org.omg.CORBA.UserExceptionを継承するファイナルJavaクラスにマッピングされます。そうでない場合,HelperクラスおよびHolderクラスの生成があるIDL struct型のようにマッピングされます。

例外が,ネストされたIDLスコープ内(特に,インタフェース内)で定義される場合,そのJavaクラス名は特殊スコープ内に定義されます。そうでない場合,そのJavaクラス名は,例外のあるIDLモジュールに対応するJavaパッケージのスコープ内に定義されます。

コードサンプル2-26 ユーザ定義例外のマッピング

//IDL
module Example {
   exception AnException {
       string reason;
   };
};

//Generated Java
package Example;
public final class AnException extends
   org.omg.CORBA.UserException {
   public java.lang.String extra;
   public AnException( ) {...}
   public AnException(java.lang.String extra) {...}
   public AnException(java.lang.String _reason,
                      java.lang.String extra) {...}
   public java.lang.String to String( ) {...}
   public boolean equals(java.lang.Object o) {...}
}

public final class AnExceptionHolder implements
       org.omg.CORBA.portable.Streamable {
   public Example.AnException value;
   public AnExceptionHolder( ){}
   public AnExceptionHolder(
              final Example.AnException _vis_value) {...}
   public void _read(final org.omg.CORBA.portable.
                                 InputStream input) {...}
   public void _write(final org.omg.CORBA.portable.
                               OutputStream output) {...}
   public org.omg.CORBA.TypeCode _type( ) {...}
}