Exception: OracleNamedError

Inherits:
StandardError
  • Object
show all
Defined in:
lib/java/oracle_sql_named_error.rb

Constant Summary collapse

UNHANDLED_ERROR =
6512

Class Method Summary collapse

Class Method Details

.===(error) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
# File 'lib/java/oracle_sql_named_error.rb', line 7

def ===(error)
  error = error.original_exception if error.respond_to?(:original_exception)
  error = error.cause if error.respond_to?(:cause) && error.cause

  Java::JavaSql::SQLException === error &&
      (error.get_error_code.in?([*error_code]) ||
       # ORA-06512: at line 1
       # ORA-20100: some exception description <--- real exception code in the second line
       error.get_error_code == UNHANDLED_ERROR &&
           error.message.split("\n")[1].try(:[], /\AORA-(\d+)/, 1).try(:to_i).in?([*error_code]))
end

.define_exception(class_name, error_code) ⇒ Object



19
20
21
22
23
24
25
# File 'lib/java/oracle_sql_named_error.rb', line 19

def define_exception(class_name, error_code)
  class_eval(<<-RUBY, __FILE__, __LINE__ + 1)
    class ::#{class_name} < OracleNamedError
      self.error_code = #{error_code}
    end
  RUBY
end