例外情報は構造体で宣言されます。ユーザ例外を設定する際には、業務処理および各出口関数内で、例外情報の領域を獲得して使用してください。
なお、例外情報を返却する際には、処理結果情報に異常または例外(APFW_RTN_ERROR)、またはリトライ(APFW_RTN_RETRY)を設定してください。
module apfwmod { interface apfwinf { long server_apl( in long param_in, /* INパラメタ */ out long param_out /* OUTパラメタ */ ); }; }; |
int server_apl( int param_in, /* INパラメタ */ int *param_out, /* OUTパラメタ */ int *rtn, /* 処理結果情報 */ apfwExcept *apfw_env ); /* 例外情報 */ |
パラメタ | アプリケーション連携実行基盤から | アプリケーション連携実行基盤へ |
---|---|---|
例外 | - |
|
|
#include "apfwcom.h" #include "apfw_cdr_lib.h" #include "XXXXXX.h" /* 実行基盤インタフェース生成ツールより生成されるヘッダファイル */ int server_apl( int param_in, /* INパラメタ */ int *param_out, /* OUTパラメタ */ int *rtn, /* 処理結果情報 */ apfwExcept *apfw_env ) /* 例外情報 */ { int apfw_result = 0; /* アプリケーションの復帰値 */ int data = 100; /* OUTパラメタ */ *param_out = 0; /* 復帰情報 */ apfw_result = 0; *rtn = APFW_RTN_ERROR; /* 処理結果情報に異常または例外(APFW_RTN_ERROR)を設定 */ /* 例外情報 */ /* 例外情報のエラーコードに値を設定(値は任意) */ apfw_env->errcode = -1; /* 例外情報のメッセージに値を設定(値は任意、省略する場合NULLを設定) */ apfw_env->errmessage = apfw_c_alloc(14); if( apfw_env->errmessage == NULL ){ apfw_env->errcode = -1; *rtn = APFW_RTN_ERROR; /*処理結果情報に異常または例外(APFW_RTN_ERROR)を設定 */ return; } strcpy(apfw_env->errmessage, "error message" ); /* 例外情報のデータに値を設定 */ /* (値は任意、省略する場合errdata.vallenに0を、errdata.valにNULLを設定) */ apfw_env->errdata.arealen = 100; apfw_env->errdata.val = apfw_c_alloc(apfw_env->errdata.arealen); if( apfw_env->errdata.val == NULL ){ apfw_env->errcode = -1; *rtn = APFW_RTN_ERROR; /*処理結果情報に異常または例外(APFW_RTN_ERROR)を設定 */ return; } apfw_env->errdata.vallen = 4; memcpy(apfw_env->errdata.val, &data, sizeof(int) ); return( apfw_result ); } |