pureQuery は JDBC に基づいていますが、pureQuery ではアプリケーションがチェック例外を処理する必要はありません。pureQuery メソッドの呼び出しを try ブロックで囲む必要はありません。
可能な場合は、pureQuery は、基礎となる JDBC ドライバーから SQLExceptions およびその他のチェック例外をキャッチします。その後 pureQuery はキャッチされた例外をラップするランタイム例外をスローします。
pureQuery ランタイム例外は以下のとおりです。
- DataRuntimeException
- この例外は、java.lang.RuntimeException を拡張するため、メソッド getMessage() および getCause() を継承します。
- ラップされた SQLException に関する情報を見つけるには、以下のメソッドを使用できます。
- public Integer getErrorCode()
- DataRuntimeException が SQLException をラップする場合、このメソッドは SQLCODE を戻します。
- DataRuntimeException が SQLException をラップしない場合、このメソッドは値 -99999 を戻します。
- public String getSQLSTATE()
- DataRuntimeException が SQLException をラップする場合、このメソッドは SQLSTATE を戻します。
- DataRuntimeException が SQLException をラップしない場合、このメソッドは値「FFFFF」を戻します。
- public SqlErrorType getErrorType()
- DataRuntimeException が SQLException をラップするかどうかにかかわらず、このメソッドは以下のいずれかの値を返します。
- AUTHORIZATION_ERROR
- CARDINALITY_VIOLATION
- CONNECTION_ERROR
- CONSTRAINT_VIOLATION
- DUPLICATE_ROW_VIOLATION
- FEATURE_NOT_SUPPORTED
- FUNCTION_ERROR
- INVALID_CURSOR_STATE
- JDBC_DRIVER_ERROR
- LIMIT_EXCEEDED
- RESOURCE_UNAVAILABLE
- STATIC_PACKAGE_NOT_FOUND
- SYNTAX_ERROR
- TIMEOUT_OR_DEADLOCK_NO_ROLLBACK
- TIMEOUT_OR_DEADLOCK_WITH_ROLLBACK
- UNCATEGORIZED_ERROR
アプリケーションが SQLException からリカバリーできるかどうかを判別するには、ブールの isTransient() メソッドを使用します。このメソッドは、SQLException が SQLTransientException のインスタンスの場合は true を戻します。SQLTransientException は、JDBC 4.0 で導入されている SQLException の 3 つのサブクラスのうちの 1 つです。
- UpdateManyException
- この例外は DataRuntimeException を拡張します。これは、バッチ更新の結果を表示するメソッド getUpdateCounts() を提供します。