Interstage Application Server アプリケーション作成ガイド (CORBAサービス編)
目次 索引 前ページ次ページ

第7章 アプリケーションの開発(COBOL)

7.3 クライアントアプリケーションの例外処理

 クライアントアプリケーションは、サーバアプリケーションの処理が正常終了したか異常終了したかを知ることができます。また、異常終了した場合には、システムで異常終了したかサーバアプリケーションで異常終了したかを知ることができます。前者をシステム例外、後者をユーザ例外と呼びます。
 メソッド呼出し時に指定したCORBA-ENVIRONMENT構造体にエラー情報が格納されます。CORBA-ENVIRONMENT構造体はCOBOL登録集ENVIRONMENT.cblを参照してください。
 MAJORには以下の値が設定されます。

  CORBA-NO-EXCEPTION      : 正常終了
  CORBA-SYSTEM-EXCEPTION  : システム例外
  CORBA-USER-EXCEPTION    : ユーザ例外

(1)システム例

 次に示すようなシステム例外の値が設定されます。システム例外で通知されるデータ型は文字列であり、文字列をCORBA-EXCEPTION-ID関数でCORBA-ENVIRONMENT構造体から取り出します。以下にシステム例外を示します。例外の意味については、“メッセージ集”の“CORBAサービスから通知される例外情報/マイナーコード”を参照してください。例外の文字列はCOBOL登録集(EX-で始まる原文)を参照してください。

例外情報

例外コード

BAD_CONTEXT

EX-CORBA-STEXCEP-BAD-CONTEXT

BAD_INV_ORDER

EX-CORBA-STEXCEP-BAD-INV-ORDER

BAD_OPERATION

EX-CORBA-STEXCEP-BAD-OPERATION

BAD_PARAM

EX-CORBA-STEXCEP-BAD-PARAM

BAD_QOS

EX-CORBA-STEXCEP-BAD-QOS

BAD_TYPECODE

EX-CORBA-STEXCEP-BAD-TYPECODE

CODESET_INCOMPATIBLE

EX-CORBA-STEXCEP-CODESET-INCOM(注)

COMM_FAILURE

EX-CORBA-STEXCEP-COMM-FAILURE

DATA_CONVERSION

EX-CORBA-STEXCEP-DATA-CONVERSI(注)

FREE_MEM

EX-CORBA-STEXCEP-FREE-MEM

IMP_LIMIT

EX-CORBA-STEXCEP-IMP-LIMIT

INITIALIZE

EX-CORBA-STEXCEP-INITIALIZE

INTERNAL

EX-CORBA-STEXCEP-INTERNAL

INTF_REPOS

EX-CORBA-STEXCEP-INTF-REPOS

INV_FLAG

EX-CORBA-STEXCEP-INV-FLAG

INV_IDENT

EX-CORBA-STEXCEP-INV-IDENT

INV_OBJREF

EX-CORBA-STEXCEP-INV-OBJREF

INV_POLICY

EX-CORBA-STEXCEP-INV-POLICY

MARSHAL

EX-CORBA-STEXCEP-MARSHAL

NO_IMPLEMENT

EX-CORBA-STEXCEP-NO-IMPLEMENT

NO_MEMORY

EX-CORBA-STEXCEP-NO-MEMORY

NO_PERMISSION

EX-CORBA-STEXCEP-NO-PERMISSION

NO_RESOURCES

EX-CORBA-STEXCEP-NO-RESOURCES

NO_RESPONSE

EX-CORBA-STEXCEP-NO-RESPONSE

OBJ_ADAPTER

EX-CORBA-STEXCEP-OBJ-ADAPTER

PERSIST_STORE

EX-CORBA-STEXCEP-PERSIST-STORE

REBIND

EX-CORBA-STEXCEP-REBIND

TIMEOUT

EX-CORBA-STEXCEP-TIMEOUT

TRANSIENT

EX-CORBA-STEXCEP-TRANSIENT

UNKNOWN

EX-CORBA-STEXCEP-UNKNOWN

INVALID_TRANSACTION

EX-CORBA-STEXCEP-INVALID-TRANS(注)

TRANSACTION_MODE

EX-CORBA-STEXCEP-TRANSACTION-M(注)

TRANSACTION_REQUIRED

EX-CORBA-STEXCEP-TRANSACTION-R(注)

TRANSACTION_ROLLEDBACK

EX-CORBA-STEXCEP-TRANSACTION-R(注)

TRANSACTION_UNAVAILABLE

EX-CORBA-STEXCEP-TRANSACTION-U(注)

注) COBOLの30文字制限のため短縮名となります。

 システム例外発生時には、CORBA-ENVIRONMENT構造体のMINORにマイナーコードが設定されます。マイナーコードの値については、“メッセージ集”の“CORBAサービスから通知される例外情報/マイナーコード”を参照してください。

(2)ユーザ例

 ユーザ例外でも文字列でエラー情報が通知されるため、CORBA-EXCEPTION-ID関数でCORBA-ENVIRONMENT構造体から取り出します。また、IDLで定義したユーザ定義情報の詳細についは、CORBA-EXCEPTION-VALUEでCORBA-ENVIRONMENT構造体から取り出します。

(3)例外情報の獲得

 例外情報を獲得する例を以下に示します。

  LINKAGE SECTION.
  01 COPY ENVIRONMENT  IN  CORBA  REPLACING  CORBA-ENVIRONMENT  BY  ENV.

  * メソッドの呼び出し
       MOVE 100 TO PARAM-1. 
       MOVE 20 TO PARAM-2. 
       CALL "ODDEMO-CALCULATE-CALCULATE" USING
             OBJ
             PARAM-1
             PARAM-2
             ENV
             RESULT. 
       EVALUATE TRUE
             WHEN CORBA-NO-EXCEPTION OF MAJOR OF ENV
                  CONTINUE
  * システム例外のエラー処理
             WHEN CORBA-SYSTEM-EXCEPTION OF MAJOR OF ENV
                  MOVE FUNCTION LENG (ID) TO STRING-LENGTH
                  CALL "CORBA-STRING-GET" USING
                        IDL-ID OF ENV
                        STRING-LENGTH
                        ID
  * マイナーコード取得処理
                        DISPLAY "MINOR OF ENV :" MINOR OF ENV.
                       ... 
  * ユーザ例外のエラー処理
             WHEN CORBA-USER-EXCEPTION OF MAJOR OF ENV
                  MOVE FUNCTION LENG (UEXC) TO STRING-LENGTH
                  CALL "CORBA-STRING-GET" USING
                        IDL-ID OF ENV
                        STRING-LENGTH
                        UEXC
        END-EVALUATE.   

目次 索引 前ページ次ページ

All Rights Reserved, Copyright(C) 富士通株式会社 2005