X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=base%2Fconditions.lisp;h=a84f6546d0c95c2f815f0917154d5e2ddb889631;hb=23950d9583e45e2e78bca8fae5f42958d341a192;hp=d5a918ade3ad10388a10d906cc8d4c0ee04cbd75;hpb=c4da3cfcbb955395d8a556e1f89aadad696302b7;p=clsql.git diff --git a/base/conditions.lisp b/base/conditions.lisp index d5a918a..a84f654 100644 --- a/base/conditions.lisp +++ b/base/conditions.lisp @@ -145,12 +145,21 @@ and signal an clsql-invalid-spec-error if they don't match." (format stream "The database ~A has already been closed." (clsql-closed-error-database c))))) -(define-condition clsql-nodb-error (clsql-error) - ((database :initarg :database :reader clsql-nodb-error-database)) +(define-condition clsql-no-database-error (clsql-error) + ((database :initarg :database :reader clsql-no-database-error-database)) (:report (lambda (c stream) - (format stream "No such database ~S is open." - (clsql-nodb-error-database c))))) - + (format stream "~S is not a CLSQL database." + (clsql-no-database-error-database c))))) + +(define-condition clsql-odbc-error (clsql-error) + ((odbc-message :initarg :odbc-message + :reader clsql-odbc-error-message) + (sql-state :initarg :sql-state :initform nil + :reader clsql-odbc-error-sql-state)) + (:report (lambda (c stream) + (format stream "[ODBC error] ~A; state: ~A" + (clsql-odbc-error-message c) + (clsql-odbc-error-sql-state c))))) ;; Signal conditions @@ -160,14 +169,8 @@ and signal an clsql-invalid-spec-error if they don't match." 'clsql-closed-error :database database)) -(defun signal-nodb-error (database) - (cerror "Ignore this error and return nil." - 'clsql-nodb-error - :database database)) - -(defun signal-no-database-error () - (cerror "Ignore this error and return nil." - 'clsql-nodb-error)) +(defun signal-no-database-error (database) + (error 'clsql-no-database-error :database database)) (define-condition clsql-type-error (clsql-error clsql-condition) ((slotname :initarg :slotname