For some bizarre reason, you have to create errors by hand, when it’s easy enough to define a deferror like this:
(defmacro deferror (new-error parent message) "Defines NEW-ERROR as an error of type PARENT with MESSAGE." `(prog1 ',new-error (put ',new-error 'error-conditions (cons ',new-error ',(get parent 'error-conditions))) (put ',new-error 'error-message ,message))) (put 'deferror 'lisp-indent-function 'defun)
Use like this:
(deferror foo error "Foo!")