Next: Processing of Errors, Up: Errors
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 Quitting.
The error message should state what is wrong (“File does not exist”), not how things ought to be (“File must exist”). The convention in Emacs Lisp is that error messages should start with a capital letter, but should not end with any sort of punctuation.
This function signals an error with an error message constructed by applying
format
(see String Conversion) 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 callingsignal
with two arguments: the error symbolerror
, and a list containing the string returned byformat
.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)
.
This function signals an error named by error-symbol. The argument data is a list of additional Lisp objects relevant to the circumstances of the error.
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 Error Symbols, 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 Handling 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.