X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=base%2Fconditions.lisp;h=f6f7e7f0364c165a926b229adf629529ba9e5a07;hb=4a6730b8d0b1de3e35e557cdb74ce9625c9444be;hp=138aa58fac6ddbdde4182d8a30f7b8b89ac79f08;hpb=ce0e343835a040406678dff74a62d1b0cb56f317;p=clsql.git diff --git a/base/conditions.lisp b/base/conditions.lisp index 138aa58..f6f7e7f 100644 --- a/base/conditions.lisp +++ b/base/conditions.lisp @@ -61,21 +61,30 @@ and signal an clsql-invalid-spec-error if they don't match." :database-type ,database-type :template (quote ,template))))) -(define-condition clsql-connect-error (clsql-error) +(define-condition clsql-access-error (clsql-error) ((database-type :initarg :database-type - :reader clsql-connect-error-database-type) + :reader clsql-access-error-database-type) (connection-spec :initarg :connection-spec - :reader clsql-connect-error-connection-spec) - (errno :initarg :errno :reader clsql-connect-error-errno) - (error :initarg :error :reader clsql-connect-error-error)) + :reader clsql-access-error-connection-spec) + (error :initarg :error :reader clsql-access-error-error)) + (:report (lambda (c stream) + (format stream "While trying to access database ~A~% using database-type ~A:~% Error ~A~% has occurred." + (database-name-from-spec + (clsql-access-error-connection-spec c) + (clsql-access-error-database-type c)) + (clsql-access-error-database-type c) + (clsql-access-error-error c))))) + +(define-condition clsql-connect-error (clsql-access-error) + ((errno :initarg :errno :reader clsql-connect-error-errno)) (:report (lambda (c stream) (format stream "While trying to connect to database ~A~% using database-type ~A:~% Error ~D / ~A~% has occurred." (database-name-from-spec - (clsql-connect-error-connection-spec c) - (clsql-connect-error-database-type c)) - (clsql-connect-error-database-type c) + (clsql-access-error-connection-spec c) + (clsql-access-error-database-type c)) + (clsql-access-error-database-type c) (clsql-connect-error-errno c) - (clsql-connect-error-error c))))) + (clsql-access-error-error c))))) (define-condition clsql-sql-error (clsql-error) ((database :initarg :database :reader clsql-sql-error-database) @@ -136,12 +145,11 @@ 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))))) ;; Signal conditions @@ -151,16 +159,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)) - -;; for USQL support +(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