ページの先頭行へ戻る
Interstage Application Server アプリケーション作成ガイド(CORBAサービス編)

5.16 サーバアプリケーションの例外処理

(1)例外情報の設定

  IDL言語でユーザ例外が定義されていた場合について、サーバアプリケーションプログラムの例を以下に示します。


IDLマッピング

IDL言語】

  module ODsample {
      interface  exptest{
          exception testException { string reason; };
          void    op1() raises( testException ); 
      };
  };

  これをJava言語で記述すると、以下のようになります。


Java言語】

<インタフェース>
  package ODsample; 
  public interface exptestOperations{
      public void op1()
          throws ODsample.exptestPackage.testException; 
  }

<ユーザ例外クラス>
  package ODsample.exptestPackage; 
  public final class testException
      extends org.omg.CORBA.UserException
  {
      public java.lang.String reason; 
      public testException(){}
      public testException( java.lang.String _reason ){ 
          reason = _reason; 
      }
  }

サーバアプリケーションでの処理

  import org.omg.CORBA.*;
  import org.omg.PortableServer.*;
  import ODsample.*;

  public class expServer {
      public static void main( String args[] ) {
          try {
              // ORBの前処理
                   :
              // POAオブジェクトの生成
                   :
              // Servantの生成とそのPOAへの登録
                   :
              // POAManagerの活性化
                   :
          }
          catch ( java.lang.Exception e ) {
              //エラー処理
                   :
          }
      }
  }

  // Servantクラス
  // サーバアプリケーションのメソッド
  class expServant extends exptestPOA{
      public void op1() throws ODsample.exptestPackage.testException  {
          throw new ODsample.exptestPackage.testException(
                                               "Test of UserException" );
      }
  }

(2)例外情報の獲得

  サーバアプリケーションで例外を獲得する方法は、クライアントアプリケーションの例外処理と同様です。詳細については、“5.10 クライアントアプリケーションの例外処理”を参照してください。