(define-condition sql-condition ()
())
-(define-condition sql-database-error (simple-error sql-condition)
+(define-condition sql-error (simple-error)
+ ())
+
+(define-condition sql-database-error (sql-error)
((error-id :initarg :error-id
:initform nil
:reader sql-error-error-id)
:initform nil
:reader sql-error-database))
(:report (lambda (c stream)
- (format stream "A database error occurred: ~A / ~A~% ~A"
+ (format stream "A database error occurred~A: ~A / ~A~% ~A"
(if (sql-error-database c)
(format nil " on database ~A" (sql-error-database c))
"")
(define-condition sql-temporary-error (sql-database-error)
())
-(define-condition sql-user-error (simple-error sql-condition)
+(define-condition sql-user-error (sql-error)
((message :initarg :message
:initform "Unspecified error"
:reader sql-user-error-message))
;; Signal conditions
(defun signal-closed-database-error (database)
- (cerror 'sql-connection-error
- :message
- (format nil "Trying to perform operation on closed database ~A."
- database)))
+ (error 'sql-connection-error
+ :database database
+ :message "Database is closed."))
(defun signal-no-database-error (database)
- (error 'sql-database-error
- :message "Not a database: ~A." database))
+ (error 'sql-database-error
+ :database database
+ :message (format nil "~A is not a database." database)))
;;; CLSQL Extensions