@c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. @c Copyright (C) 1990-1993, 1999, 2001-2019 Free Software Foundation, @c Inc. @c See the file elisp.texi for copying conditions. @node Standard Errors @appendix Standard Errors @cindex standard errors Here is a list of the more important error symbols in standard Emacs, grouped by concept. The list includes each symbol's message and a cross reference to a description of how the error can occur. Each error symbol has a set of parent error conditions that is a list of symbols. Normally this list includes the error symbol itself and the symbol @code{error}. Occasionally it includes additional symbols, which are intermediate classifications, narrower than @code{error} but broader than a single error symbol. For example, all the errors in accessing files have the condition @code{file-error}. If we do not say here that a certain error symbol has additional error conditions, that means it has none. As a special exception, the error symbol @code{quit} does not have the condition @code{error}, because quitting is not considered an error. Most of these error symbols are defined in C (mainly @file{data.c}), but some are defined in Lisp. For example, the file @file{userlock.el} defines the @code{file-locked} and @code{file-supersession} errors. Several of the specialized Lisp libraries distributed with Emacs define their own error symbols. We do not attempt to list of all those here. @xref{Errors}, for an explanation of how errors are generated and handled. @table @code @item error The message is @samp{error}. @xref{Errors}. @item quit The message is @samp{Quit}. @xref{Quitting}. @item args-out-of-range The message is @samp{Args out of range}. This happens when trying to access an element beyond the range of a sequence, buffer, or other container-like object. @xref{Sequences Arrays Vectors}, and @xref{Text}. @item arith-error The message is @samp{Arithmetic error}. This occurs when trying to perform integer division by zero. @xref{Numeric Conversions}, and @xref{Arithmetic Operations}. @item beginning-of-buffer The message is @samp{Beginning of buffer}. @xref{Character Motion}. @item buffer-read-only The message is @samp{Buffer is read-only}. @xref{Read Only Buffers}. @item circular-list The message is @samp{List contains a loop}. This happens when a circular structure is encountered. @xref{Circular Objects}. @item cl-assertion-failed The message is @samp{Assertion failed}. This happens when the @code{cl-assert} macro fails a test. @xref{Assertions,,, cl, Common Lisp Extensions}. @item coding-system-error The message is @samp{Invalid coding system}. @xref{Lisp and Coding Systems}. @item cyclic-function-indirection The message is @samp{Symbol's chain of function indirections contains a loop}. @xref{Function Indirection}. @item cyclic-variable-indirection The message is @samp{Symbol's chain of variable indirections contains a loop}. @xref{Variable Aliases}. @item dbus-error The message is @samp{D-Bus error}. This is only defined if Emacs was compiled with D-Bus support. @xref{Errors and Events,,, dbus, D-Bus integration in Emacs}. @item end-of-buffer The message is @samp{End of buffer}. @xref{Character Motion}. @item end-of-file The message is @samp{End of file during parsing}. Note that this is not a subcategory of @code{file-error}, because it pertains to the Lisp reader, not to file I/O@. @xref{Input Functions}. @item file-already-exists This is a subcategory of @code{file-error}. @xref{Writing to Files}. @item file-date-error This is a subcategory of @code{file-error}. It occurs when @code{copy-file} tries and fails to set the last-modification time of the output file. @xref{Changing Files}. @item file-error We do not list the error-strings of this error and its subcategories, because the error message is normally constructed from the data items alone when the error condition @code{file-error} is present. Thus, the error-strings are not very relevant. However, these error symbols do have @code{error-message} properties, and if no data is provided, the @code{error-message} property @emph{is} used. @xref{Files}. @item file-missing This is a subcategory of @code{file-error}. It occurs when an operation attempts to act on a file that is missing. @xref{Changing Files}. @c jka-compr.el @item compression-error This is a subcategory of @code{file-error}, which results from problems handling a compressed file. @xref{How Programs Do Loading}. @c userlock.el @item file-locked This is a subcategory of @code{file-error}. @xref{File Locks}. @c userlock.el @item file-supersession This is a subcategory of @code{file-error}. @xref{Modification Time}. @c filenotify.el @item file-notify-error This is a subcategory of @code{file-error}. It happens, when a file could not be watched for changes. @xref{File Notifications}. @c net/ange-ftp.el @item ftp-error This is a subcategory of @code{file-error}, which results from problems in accessing a remote file using ftp. @xref{Remote Files,,, emacs, The GNU Emacs Manual}. @item invalid-function The message is @samp{Invalid function}. @xref{Function Indirection}. @item invalid-read-syntax The message is usually @samp{Invalid read syntax}. @xref{Printed Representation}. This error can also be raised by commands like @code{eval-expression} when there's text following an expression. In that case, the message is @samp{Trailing garbage following expression}. @item invalid-regexp The message is @samp{Invalid regexp}. @xref{Regular Expressions}. @c simple.el @item mark-inactive The message is @samp{The mark is not active now}. @xref{The Mark}. @item no-catch The message is @samp{No catch for tag}. @xref{Catch and Throw}. @ignore @c Not actually used for anything? Probably definition should be removed. @item protected-field The message is @samp{Attempt to modify a protected file}. @end ignore @item range-error The message is @code{Arithmetic range error}. This can happen with integers exceeding the @code{integer-width} limit. @xref{Integer Basics}. @item scan-error The message is @samp{Scan error}. This happens when certain syntax-parsing functions find invalid syntax or mismatched parentheses. Conventionally raised with three argument: a human-readable error message, the start of the obstacle that cannot be moved over, and the end of the obstacle. @xref{List Motion}, and @xref{Parsing Expressions}. @item search-failed The message is @samp{Search failed}. @xref{Searching and Matching}. @item setting-constant The message is @samp{Attempt to set a constant symbol}. This happens when attempting to assign values to @code{nil}, @code{t}, @code{most-positive-fixnum}, @code{most-negative-fixnum}, and keyword symbols. It also happens when attempting to assign values to @code{enable-multibyte-characters} and some other symbols whose direct assignment is not allowed for some reason. @xref{Constant Variables}. @c simple.el @item text-read-only The message is @samp{Text is read-only}. This is a subcategory of @code{buffer-read-only}. @xref{Special Properties}. @item undefined-color The message is @samp{Undefined color}. @xref{Color Names}. @item user-error The message is the empty string. @xref{Signaling Errors}. @item user-search-failed This is like @samp{search-failed}, but doesn't trigger the debugger, like @samp{user-error}. @xref{Signaling Errors}, and @xref{Searching and Matching}. This is used for searching in Info files, @xref{Search Text,,,info,Info}. @item void-function The message is @samp{Symbol's function definition is void}. @xref{Function Cells}. @item void-variable The message is @samp{Symbol's value as variable is void}. @xref{Accessing Variables}. @item wrong-number-of-arguments The message is @samp{Wrong number of arguments}. @xref{Argument List}. @item wrong-type-argument The message is @samp{Wrong type argument}. @xref{Type Predicates}. @end table @ignore The following seem to be unused now. The following kinds of error, which are classified as special cases of @code{arith-error}, can occur on certain systems for invalid use of mathematical functions. @xref{Math Functions}. @table @code @item domain-error The message is @samp{Arithmetic domain error}. @item overflow-error The message is @samp{Arithmetic overflow error}. This is a subcategory of @code{domain-error}. @item singularity-error The message is @samp{Arithmetic singularity error}. This is a subcategory of @code{domain-error}. @item underflow-error The message is @samp{Arithmetic underflow error}. This is a subcategory of @code{domain-error}. @end table @end ignore