ページの先頭行へ戻る
Interstage Business Application Server オープンJavaフレームワークユーザーズガイド
FUJITSU Software

3.3.5 Symfowareのエラーコードに対応した例外クラス

本製品に含まれるSpring Frameworkでは、Symfoware ServerのNativeインタフェースのエラーコードに対応した例外クラスとのマッピング情報が定義されています。

定義されているマッピング情報を元にSpring Frameworkが例外を返却するため、ユーザが作成するアプリケーションはSymfowareのエラーコードを意識する必要がありません。

以下に、Spring Frameworkがマッピング情報を元に返却する例外クラスについて説明します。

No.

例外クラス

説明

1

DataAccessException

以降で説明する例外クラスのスーパークラスです。スーパークラスのため、本例外はスローされません。

2

BadSqlGrammarException

SQL文法に誤りがある場合にスローされます。

3

InvalidResultSetAccessException

データベースの結果セットが無効な形式である場合にスローされます。

4

DataAccessResourceFailureException

接続以外の資源へのアクセスへ失敗した場合にスローされます。

5

PermissionDeniedDataAccessException

アクセス権限がない場合にスローされます。

6

DataIntegrityViolationException

挿入または、更新の結果、データの一貫性が保てなくなった場合にスローされます。

7

CannotAcquireLockException

ロックに失敗した場合にスローされます。

8

DeadlockLoserDataAccessException

デッドロックが発生した場合にスローされます。

9

CannotSerializeTransactionException

トランザクション分離レベルがSERIALIZABLEでかつ、他のトランザクションの完了待ちになったトランザクションが完了しなかった場合にスローされます。

10

UncategorizedSQLException

発生したエラーコードがNo.2~9の例外クラスに該当しない場合にスローされます。

本製品で提供するSpring FrameworkにおいてのSymfowareのエラーコードとSpring Frameworkが提供する例外クラスとの関連付けを下記に示します。

表3.1 Vendorエラーメッセージ

SQLCODE値

対応クラス

7

DataAccessResourceFailureException

8

DataAccessResourceFailureException

9

DataAccessResourceFailureException

22

PermissionDeniedDataAccessException

103

DataAccessResourceFailureException

104

BadSqlGrammarException

1039

CannotSerializeTransactionException

1041

InvalidResultSetAccessException

1044

BadSqlGrammarException

1058

InvalidResultSetAccessException

1059

InvalidResultSetAccessException

1060

DataIntegrityViolationException

1085

InvalidResultSetAccessException

1086

InvalidResultSetAccessException

1088

InvalidResultSetAccessException

2001

CannotSerializeTransactionException

表3.2 SQLSTATEエラーメッセージ

SQLSTATE値

対応クラス

22000

BadSqlGrammarException

22001

InvalidResultSetAccessException

2A000

BadSqlGrammarException

37000

BadSqlGrammarException

3F000

BadSqlGrammarException

40000

CannotSerializeTransactionException

42000

BadSqlGrammarException

HZ220

PermissionDeniedDataAccessException

HZ370

BadSqlGrammarException

表3.3 上記に当てはまらない場合

SQLSTATE値

対応クラス

07xxx

BadSqlGrammarException

21xxx

BadSqlGrammarException

2Axxx

BadSqlGrammarException

37xxx

BadSqlGrammarException

42xxx

BadSqlGrammarException

65xxx

BadSqlGrammarException

50xxx

BadSqlGrammarException

01xxx

DataIntegrityViolationException

22xxx

DataIntegrityViolationException

23xxx

DataIntegrityViolationException

27xxx

DataIntegrityViolationException

44xxx

DataIntegrityViolationException

08xxx

DataAccessResourceFailureException

53xxx

DataAccessResourceFailureException

54xxx

DataAccessResourceFailureException

40xxx

ConcurrencyFailureException

61xxx

ConcurrencyFailureException

その他

UncategorizedSQLException

EmployeeDaoImplを元にBadSqlGrammarException/UncategorizedSQLException/DataAccessExceptionクラスを使用した例外処理の例を以下に示します。

package test;
・・・
import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.BadSqlGrammarException;
import org.springframework.jdbc.UncategorizedSQLException;
・・・
public class EmployeeDaoImpl implements EmployeeDao{
    ・・・
    public boolean execDaoInsert(String Employee){
        boolean ret = true;
        try{
            // データベースアクセス処理
        } catch(BadSqlGrammarException bage){
            // SQL文法に誤りエラー時の任意の処理
        } catch(UncategorizedSQLException use){
            // SQL文法に誤りエラー以外の任意の処理
        } catch(DataAccessException dae){
            // 上記エラー以外の任意の処理
        }
        return ret; 
    }
    ・・・
}

■Spring Frameworkが返却する例外クラスを利用することのメリット

Spring Frameworkが返却する例外クラスを利用する場合、以下のメリットがあります。