Class: ActiveRecord::JDBCError
- Inherits:
-
WrappedDatabaseException
- Object
- WrappedDatabaseException
- ActiveRecord::JDBCError
- Defined in:
- lib/arjdbc/jdbc/error.rb
Overview
Represents exceptions that have propagated up through the JDBC API.
Instance Method Summary collapse
-
#cause ⇒ Object
(also: #original_exception)
Likely (but not necessarily) the same as #jdbc_exception.
- #errno ⇒ Object deprecated Deprecated.
-
#error_code ⇒ Integer, NilClass
The DB (or JDBC driver implementation specific) vendor error code.
-
#initialize(message = nil, cause = $!) ⇒ JDBCError
constructor
A new instance of JDBCError.
-
#jdbc_exception ⇒ Object
(also: #sql_exception)
The full Java exception (SQLException) object that was raised (if any).
-
#recoverable? ⇒ Boolean
true if the current error might be recovered e.g.
- #set_backtrace(backtrace) ⇒ Object
-
#sql_state ⇒ String, NilClass
SQL code as standardized by ISO/ANSI and Open Group (X/Open), although some codes have been reserved for DB vendors to define for themselves.
-
#transient? ⇒ Boolean
true when a failed operation might be able to succeed when retried (e.g. timeouts).
Constructor Details
#initialize(message = nil, cause = $!) ⇒ JDBCError
Returns a new instance of JDBCError.
5 6 7 8 9 10 11 12 |
# File 'lib/arjdbc/jdbc/error.rb', line 5 def initialize( = nil, cause = $!) super( ( .nil? && cause ) ? cause. : ) if cause.is_a? Java::JavaSql::SQLException @jdbc_exception, @cause = cause, nil else @cause, @jdbc_exception = cause, nil end end |
Instance Method Details
#cause ⇒ Object Also known as: original_exception
Likely (but not necessarily) the same as #jdbc_exception.
45 |
# File 'lib/arjdbc/jdbc/error.rb', line 45 def cause; ( @cause ||= nil ) || jdbc_exception end |
#errno ⇒ Object
26 |
# File 'lib/arjdbc/jdbc/error.rb', line 26 def errno; error_code end |
#error_code ⇒ Integer, NilClass
The DB (or JDBC driver implementation specific) vendor error code.
17 18 19 20 21 22 23 |
# File 'lib/arjdbc/jdbc/error.rb', line 17 def error_code if ( @error_code ||= nil ).nil? @error_code = jdbc_exception ? jdbc_exception.getErrorCode : nil else @error_code end end |
#jdbc_exception ⇒ Object Also known as: sql_exception
Navigate through chained exceptions using jdbc_exception.next_exception
.
The full Java exception (SQLException) object that was raised (if any).
36 |
# File 'lib/arjdbc/jdbc/error.rb', line 36 def jdbc_exception; @jdbc_exception end |
#recoverable? ⇒ Boolean
true if the current error might be recovered e.g. by re-trying the transaction
40 |
# File 'lib/arjdbc/jdbc/error.rb', line 40 def recoverable?; jdbc_exception.is_a?(Java::JavaSql::SQLRecoverableException) end |
#set_backtrace(backtrace) ⇒ Object
51 52 53 54 55 56 57 58 59 |
# File 'lib/arjdbc/jdbc/error.rb', line 51 def set_backtrace(backtrace) @raw_backtrace = backtrace if ( nested = cause ) && ! nested.equal?(self) backtrace = backtrace - ( nested.respond_to?(:raw_backtrace) ? nested.raw_backtrace : nested.backtrace ) backtrace << "#{nested.backtrace.first}: #{nested.} (#{nested.class.name})" backtrace.concat nested.backtrace[1..-1] || [] end super(backtrace) end |
#sql_state ⇒ String, NilClass
SQL code as standardized by ISO/ANSI and Open Group (X/Open), although some codes have been reserved for DB vendors to define for themselves.
32 |
# File 'lib/arjdbc/jdbc/error.rb', line 32 def sql_state; jdbc_exception ? jdbc_exception.getSQLState : nil end |
#transient? ⇒ Boolean
true when a failed operation might be able to succeed when retried (e.g. timeouts)
42 |
# File 'lib/arjdbc/jdbc/error.rb', line 42 def transient?; jdbc_exception.is_a?(Java::JavaSql::SQLTransientException) end |