summaryrefslogtreecommitdiffstats
path: root/lib/sqlite3/errors.rb
diff options
context:
space:
mode:
authorJamis Buck <jamis@37signals.com>2005-02-08 03:46:34 +0000
committerJamis Buck <jamis@37signals.com>2005-02-08 03:46:34 +0000
commit3392b4c346dc23d590fd782fd8a6f6f4594a3525 (patch)
treef659e1925312be34c0052c76310554106e376c05 /lib/sqlite3/errors.rb
parent4c3f433efc54403478cbc56d348773167ee5a775 (diff)
downloadthird_party-sqlite3-ruby-3392b4c346dc23d590fd782fd8a6f6f4594a3525.tar.gz
third_party-sqlite3-ruby-3392b4c346dc23d590fd782fd8a6f6f4594a3525.tar.xz
third_party-sqlite3-ruby-3392b4c346dc23d590fd782fd8a6f6f4594a3525.zip
Added missing exceptions (format, range, and NOTADB). Exceptions also now have a "code" attribute that is the numeric value of the error that occurred.
Diffstat (limited to 'lib/sqlite3/errors.rb')
-rw-r--r--lib/sqlite3/errors.rb24
1 files changed, 20 insertions, 4 deletions
diff --git a/lib/sqlite3/errors.rb b/lib/sqlite3/errors.rb
index 308a4c9..5c090bf 100644
--- a/lib/sqlite3/errors.rb
+++ b/lib/sqlite3/errors.rb
@@ -34,7 +34,19 @@ require 'sqlite3/constants'
module SQLite3
- class Exception < ::Exception; end
+ class Exception < ::Exception
+ @code = 0
+
+ # The numeric error code that this exception represents.
+ def self.code
+ @code
+ end
+
+ # A convenience for accessing the error code for this exception.
+ def code
+ self.class.code
+ end
+ end
class SQLException < Exception; end
class InternalException < Exception; end
@@ -59,6 +71,9 @@ module SQLite3
class MisuseException < Exception; end
class UnsupportedException < Exception; end
class AuthorizationException < Exception; end
+ class FormatException < Exception; end
+ class RangeException < Exception; end
+ class NotADatabaseException < Exception; end
EXCEPTIONS = [
nil,
@@ -68,14 +83,15 @@ module SQLite3
NotFoundException, FullException, CantOpenException, ProtocolException,
EmptyException, SchemaChangedException, TooBigException,
ConstraintException, MismatchException, MisuseException,
- UnsupportedException, AuthorizationException
- ]
+ UnsupportedException, AuthorizationException, FormatException,
+ RangeException, NotADatabaseException
+ ].each_with_index { |e,i| e.instance_variable_set( :@code, i ) if e }
module Error
def check( result, db=nil, msg=nil )
unless result == Constants::ErrorCode::OK
msg = ( msg ? msg + ": " : "" ) + db.errmsg if db
- raise EXCEPTIONS[result], msg
+ raise ( EXCEPTIONS[result] || SQLite3::Exception ), msg
end
end
module_function :check