ページの先頭行へ戻る
Interstage Shunsaku Data Manager V9.0.6 アプリケーション開発ガイド
FUJITSU Software

11.2.5 エラー発生時の対処

C APIの操作中に警告やエラーが発生した場合、各関数の実行時に、正常終了以外の値を返却します。正常終了以外の値が返却された場合は、ShunGetErrorMessage関数を利用して、以下の情報を取得できます。


記述例

if(ret != SHUN_SUCCESS) {
  /* エラー情報の取得 */
  ShunGetErrorMessage(StmtH, &Err_Level, &Err_Msg);               (1) (2)
  switch ( Err_Level ) {
  case SHUN_ERROR_CONNECTION:
    printf("エラーレベル            = SHUN_ERROR_CONNECTION\n");
    break;
  case SHUN_ERROR_TRANSACTION:
    printf("エラーレベル            = SHUN_ERROR_TRANSACTION\n");
    break;
  case SHUN_ERROR_DATA:
    printf("エラーレベル            = SHUN_ERROR_DATA\n");
    break;
  }
  printf("エラーメッセージ          = %s\n", Err_Msg);
}

エラー情報の取得

各関数を実行した際の復帰値を判定し、エラーの場合はエラー情報を取得します。


(1) エラーレベル

エラーレベルを調べることで、ユーザはエラー発生後のアプリケーションの状態を知ることができます。

エラーレベルとして、以下の4つを返却します。

定数名

意味

SHUN_INFORMATION

正常終了したことを意味します。

SHUN_ERROR_DATA

パラメタ間違いなど、警告レベルのエラーが発生したことを意味します。エラーの発生箇所から再実行してください。

SHUN_ERROR_TRANSACTION

エラーの発生により、トランザクションがキャンセルされた状態です。トランザクションの開始点から再実行してください。

SHUN_ERROR_CONNECTION

エラーの発生により、コネクションが強制切断された状態です。エラーが発生したコネクションハンドルを破棄し、作成し直してから、コネクションの接続から再実行してください。


(2) エラーメッセージ

エラーメッセージの詳細は、“メッセージ集”の“API実行時に出力されるメッセージ”を参照してください。


11.2.5.1 エラー発生時の対処例

エラー発生時の対処例について説明します。


処理の流れ

エラー発生時は、取得したエラーレベルによって再実行する箇所を切り分けます。エラーレベルによる再実行処理の切分けについて、以下の図に示します。


図11.15 エラー発生時の対処


(1) パラメタ間違いなどのエラーが発生した場合

SHUN_ERROR_DATAが返却されます。この場合、パラメタなどを修正後、失敗した処理を再実行します。


(2) トランザクションがキャンセルされた場合

SHUN_ERROR_TRANSACTION(注1)が返却されます。この場合、トランザクションを開始した位置(注2)から再実行します。

注1) 自動コミットを無効にした場合のみ、返却するエラーレベルです。自動コミットが有効の場合は、本エラーレベルは返却しません。
注2) APIからは、明示的にトランザクションを開始することはできません。自動コミットを無効にした後、データに対する初回の更新操作によって自動的に開始されます。


(3) Shunsakuとの接続が強制切断された場合

SHUN_ERROR_CONNECTIONが返却されます。この場合、エラーが発生したコネクションハンドルを解放し、再度コネクションハンドルを割り当て、コネクションの確立を再実行します。


注意事項

コネクションの確立時に(マシン未起動やconductor未起動による)通信エラーが発生した場合はSHUN_ERROR_DATAが返却されます。この場合は、SHUN_ERROR_CONNECTIONが返却された場合と同様に、コネクションの確立から再実行してください。