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.