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); } |
エラー情報の取得
各関数を実行した際の復帰値を判定し、エラーの場合はエラー情報を取得します。
エラーレベルを調べることで、ユーザはエラー発生後のアプリケーションの状態を知ることができます。
エラーレベルとして、以下の4つを返却します。
定数名 | 意味 |
---|---|
SHUN_INFORMATION | 正常終了したことを意味します。 |
SHUN_ERROR_DATA | パラメタ間違いなど、警告レベルのエラーが発生したことを意味します。エラーの発生箇所から再実行してください。 |
SHUN_ERROR_TRANSACTION | エラーの発生により、トランザクションがキャンセルされた状態です。トランザクションの開始点から再実行してください。 |
SHUN_ERROR_CONNECTION | エラーの発生により、コネクションが強制切断された状態です。エラーが発生したコネクションハンドルを破棄し、作成し直してから、コネクションの接続から再実行してください。 |
エラーメッセージの詳細は、“メッセージ集”の“API実行時に出力されるメッセージ”を参照してください。
エラー発生時の対処例について説明します。
処理の流れ
エラー発生時は、取得したエラーレベルによって再実行する箇所を切り分けます。エラーレベルによる再実行処理の切分けについて、以下の図に示します。
図12.15 エラー発生時の対処
SHUN_ERROR_DATAが返却されます。この場合、パラメタなどを修正後、失敗した処理を再実行します。
SHUN_ERROR_TRANSACTION(注1)が返却されます。この場合、トランザクションを開始した位置(注2)から再実行します。
注1) 自動コミットを無効にした場合のみ、返却するエラーレベルです。自動コミットが有効の場合は、本エラーレベルは返却しません。
注2) APIからは、明示的にトランザクションを開始することはできません。自動コミットを無効にした後、データに対する初回の更新操作によって自動的に開始されます。
SHUN_ERROR_CONNECTIONが返却されます。この場合、エラーが発生したコネクションハンドルを解放し、再度コネクションハンドルを割り当て、コネクションの確立を再実行します。
注意事項
コネクションの確立時に(マシン未起動やconductor未起動による)通信エラーが発生した場合はSHUN_ERROR_DATAが返却されます。この場合は、SHUN_ERROR_CONNECTIONが返却された場合と同様に、コネクションの確立から再実行してください。