12.3 SQL例外拡張機能
SQLExceptionのサブクラスとして複数の例外クラスが追加されています。JDBC 4.0 APIで返却される例外クラスの一覧と各クラスの説明を次の表に示します。
項番 |
クラス名 |
説明 |
接続状態中にエラーが発生した場合の接続状態 |
---|---|---|---|
1 |
SQLNonTransientException |
一時的ではないエラーを示しています。失敗したSQL文を再実行しても,正常に実行できない場合に投入されます。 |
有効 |
2 |
SQLFeatureNotSupportedException |
SQLSTATEのクラス値が0A(サポートされていない機能)の場合に投入されます。 |
有効 |
3 |
SQLNonTransientConnectionException |
SQLSTATEのクラス値が08(コネクション違反)の場合に投入されます。 |
− |
4 |
SQLDataException |
SQLSTATEのクラス値が22(データ例外)の場合に投入されます。 |
有効 |
5 |
SQLIntegrityConstraintViolationException |
SQLSTATEのクラス値が23(整合性制約違反)の場合に投入されます。 |
有効 |
6 |
SQLInvalidAuthorizationSpecException |
SQLSTATEのクラス値が28(認可識別子の指定が正しくない)の場合に投入されます。 |
− |
7 |
SQLSyntaxErrorException |
SQLSTATEのクラス値が42(構文誤りまたはアクセス規則違反)の場合に投入されます。 |
有効 |
8 |
SQLTransientException |
一時的なエラーを示しています。失敗したSQL文を再実行した場合,成功する可能性があるときに投入されます。 |
有効 |
9 |
SQLTransientConnectionException |
SQLSTATEのクラス値が08(コネクション違反)の場合に投入されます。HADBサーバが開始または終了中であるときなどが該当します。 |
− |
10 |
SQLTransactionRollbackException |
SQLSTATEのクラス値が40(トランザクションがロールバックした)の場合に投入されます。 |
有効 |
11 |
SQLTimeoutException |
タイムアウトが発生した場合に投入されます。 |
有効 |
12 |
SQLRecoverableException |
接続を再確保したあとに,失敗したトランザクションを再実行した場合,成功する可能性があるときに投入されます。 |
無効 |
13 |
SQLClientInfoException |
設定できないクライアントのプロパティが1つ以上ある場合に,Connection.setClientInfoメソッドによって投入されます。 |
− |
- (凡例)
-
−:該当しません。
- 注
-
SQLSTATEのクラス値については,マニュアルHADB メッセージのSQLSTATEの出力形式を参照してください。
JDBC 4.0 APIで追加された例外クラスの継承関係を次に示します。
java.sql.SQLException java.sql.SQLNonTransientException java.sql.SQLFeatureNotSupportedException java.sql.SQLNonTransientConnectionException java.sql.SQLDataException java.sql.SQLIntegrityConstraintViolationException java.sql.SQLInvalidAuthorizationSpecException java.sql.SQLSyntaxErrorException java.sql.SQLTransientException java.sql.SQLTransientConnectionException java.sql.SQLTransactionRollbackException java.sql.SQLTimeoutException java.sql.SQLRecoverableException java.sql.SQLClientInfoException
各例外クラスは,java.sqlパッケージのクラスを直接利用します。例外クラスが提供する各メソッドの詳細,使用方法については,JDBC規格の関連ドキュメントを参照してください。
- 重要
-
executeQueryメソッドなどのSQL文を実行するメソッドで,setQueryTimeoutメソッドまたはadb_clt_rpc_sql_wait_timeに指定した時間を超えたためにタイムアウトが発生した場合,JDBC規格ではSQLTimeoutExceptionが投入されます。ただし,HADBクライアントからHADBサーバに処理要求をしてから,応答が戻ってくるまでの待ち時間でタイムアウトが発生した場合は,HADBサーバと必ず切断されるため,SQLRecoverableExceptionが投入されます。