Most errors are signaled "automatically" within Lisp primitives
which you call for other purposes, such as if you try to take the
CAR of an integer or move forward a character at the end of the
buffer; you can also signal errors explicitly with the functions
error
and signal
.
Quitting, which happens when the user types C-g, is not considered an error, but it is handled almost like an error. See section Quitting.
format
(see section Conversion of Characters and Strings) to
format-string and args.
These examples show typical uses of error
:
(error "That is an error -- try something else") error--> That is an error -- try something else (error "You have committed %d errors" 10) error--> You have committed 10 errors
error
works by calling signal
with two arguments: the
error symbol error
, and a list containing the string returned by
format
.
Warning: If you want to use your own string as an error message
verbatim, don't just write (error string)
. If string
contains `%', it will be interpreted as a format specifier, with
undesirable results. Instead, use (error "%s" string)
.
The argument error-symbol must be an error symbol---a symbol
bearing a property error-conditions
whose value is a list of
condition names. This is how Emacs Lisp classifies different sorts of
errors.
The number and significance of the objects in data depends on
error-symbol. For example, with a wrong-type-arg
error,
there should be two objects in the list: a predicate that describes the type
that was expected, and the object that failed to fit that type.
See section Error Symbols and Condition Names, for a description of error symbols.
Both error-symbol and data are available to any error
handlers that handle the error: condition-case
binds a local
variable to a list of the form (error-symbol .
data)
(see section Writing Code to Handle Errors). If the error is not handled,
these two values are used in printing the error message.
The function signal
never returns (though in older Emacs versions
it could sometimes return).
(signal 'wrong-number-of-arguments '(x y)) error--> Wrong number of arguments: x, y (signal 'no-such-error '("My unknown error condition")) error--> peculiar error: "My unknown error condition"
Common Lisp note: Emacs Lisp has nothing like the Common Lisp concept of continuable errors.
Go to the first, previous, next, last section, table of contents.