下面列出标准 Emacs 中较为重要的错误符号,按概念分组。列表包含每个符号对应的提示信息,以及对该错误产生原因说明的交叉引用。
每个错误符号都有一组父错误条件,由符号列表构成。通常该列表包含错误符号自身以及符号 error。偶尔也会包含其他符号,这些属于中间分类,范围比 error 更窄,但比单个错误符号更广。例如,所有访问文件时产生的错误都带有条件 file-error。如果此处未说明某个错误符号带有额外错误条件,则表示它没有。
作为特殊例外,错误符号 quit 和 minibuffer-quit 不带有条件 error,因为退出操作不被视为错误。
这些错误符号大多在 C 代码中定义(主要位于 data.c),部分则在 Lisp 中定义。例如,文件 userlock.el 定义了 file-locked 和 file-supersession 错误。随 Emacs 分发的若干专用 Lisp 库也会定义各自的错误符号,此处不尝试全部列出。
See 错误,了解错误的产生与处理方式。
error提示信息为 ‘error’。See 错误。
quit提示信息为 ‘Quit’。See 退出。
minibuffer-quit提示信息为 ‘Quit’。属于 quit 的子类别。See 退出。
args-out-of-range提示信息为 ‘Args out of range’。尝试访问序列、缓冲区或其他容器类对象范围之外的元素时触发。See 序列、数组与向量,另见 文本。
arith-errorbeginning-of-buffer提示信息为 ‘Beginning of buffer’。See 按字符移动。
buffer-read-only提示信息为 ‘Buffer is read-only’。See 只读缓冲区。
circular-list提示信息为 ‘List contains a loop’。遇到环形结构时触发。See 循环对象的读取语法。
cl-assertion-failed提示信息为 ‘Assertion failed’。cl-assert 宏测试不通过时触发。See Assertions in Common Lisp Extensions。
coding-system-error提示信息为 ‘Invalid coding system’。See Lisp中的编码系统。
cyclic-function-indirection提示信息为 ‘Symbol's chain of function indirections contains a loop’。See 符号函数间接引用。
cyclic-variable-indirection提示信息为 ‘Symbol's chain of variable indirections contains a loop’。See 变量别名。
dbus-error提示信息为 ‘D-Bus error’。See Errors and Events in D-Bus integration in Emacs。
end-of-buffer提示信息为 ‘End of buffer’。See 按字符移动。
end-of-file提示信息为 ‘End of file during parsing’。注意该错误不属于 file-error 子类别,因为它与 Lisp 读取器相关,而非文件 I/O。See 输入函数。
file-already-exists属于 file-error 子类别。See 写入文件。
permission-denied属于 file-error 子类别,当操作系统因某种原因不允许 Emacs 访问文件或目录时触发。
file-date-error属于 file-error 子类别。copy-file 尝试设置输出文件的最后修改时间失败时触发。See 修改文件名与属性。
file-error此处不列出该错误及其子类别的错误字符串,因为当存在错误条件 file-error 时,提示信息通常仅由数据项构造而成,因此错误字符串并不重要。不过这些错误符号确实带有 error-message 属性,若未提供数据,则会使用 error-message 属性。See 文件。
file-missing属于 file-error 子类别。操作尝试对不存在的文件执行时触发。See 修改文件名与属性。
compression-error属于 file-error 子类别,处理压缩文件出现问题时触发。See 程序的加载方式。
file-locked属于 file-error 子类别。See 文件锁。
file-supersession属于 file-error 子类别。See 缓冲区修改时间。
file-notify-error属于 file-error 子类别。无法监听文件变更时触发。See 文件变更通知。
remote-file-error属于 file-error 子类别,访问远程文件出现问题时触发。See Remote Files in The GNU Emacs Manual。该错误常出现在计时器、进程过滤器、进程守卫函数或一般特殊事件尝试访问远程文件,且与另一远程文件操作冲突时。通常建议提交错误报告。See Bugs in The GNU Emacs Manual。
ftp-error属于 remote-file-error 子类别,通过 ftp 访问远程文件出现问题时触发。See Remote Files in The GNU Emacs Manual。
invalid-function提示信息为 ‘Invalid function’。See 符号函数间接引用。
invalid-read-syntax提示信息通常为 ‘Invalid read syntax’。See 打印表示与读入语法。该错误也可能由 eval-expression 等命令在表达式后存在多余文本时触发,此时提示信息为 ‘Trailing garbage following expression’。
invalid-regexp提示信息为 ‘Invalid regexp’。See 正则表达式。
mark-inactive提示信息为 ‘The mark is not active now’。See 标记点。
no-catch提示信息为 ‘No catch for tag’。See 显式非局部退出:catch 和 throw。
range-error提示信息为 Arithmetic range error。
overflow-error提示信息为 ‘Arithmetic overflow error’。属于 range-error 子类别。
整数超出 integer-width 限制时可能触发。See 整数基础。
scan-error提示信息为 ‘Scan error’。某些语法解析函数发现无效语法或不匹配的括号时触发。按惯例触发时携带三个参数:人类可读的错误信息、无法越过的障碍起始位置、障碍结束位置。See 移动遍历平衡表达式,另见 表达式解析。
search-failed提示信息为 ‘Search failed’。See 搜索与匹配。
setting-constant提示信息为 ‘Attempt to set a constant symbol’。尝试对 nil、t、most-positive-fixnum、most-negative-fixnum 以及关键字符号赋值时触发。也会在尝试对 enable-multibyte-characters 及其他因某种原因不允许直接赋值的符号赋值时触发。See 永不改变的变量。
text-read-only提示信息为 ‘Text is read-only’。属于 buffer-read-only 子类别。See 具有特殊含义的文本属性。
undefined-color提示信息为 ‘Undefined color’。See 颜色名称。
user-error提示信息为空字符串。See 如何发出错误信号。
user-search-failed与 ‘search-failed’ 类似,但不会触发调试器,行为同 ‘user-error’。See 如何发出错误信号,另见 搜索与匹配。用于 Info 文件内搜索,参见 Search Text in Info。
void-function提示信息为 ‘Symbol's function definition is void’。See 访问函数单元内容。
void-variable提示信息为 ‘Symbol's value as variable is void’。See 访问变量值。
wrong-number-of-arguments提示信息为 ‘Wrong number of arguments’。See 参数列表的特性。
wrong-type-argument提示信息为 ‘Wrong type argument’。See 类型谓词。
unknown-image-type提示信息为 ‘Cannot determine image type’。See 图像。
inhibited-interaction提示信息为 ‘User interaction while inhibited’。当 inhibit-interaction 非 nil 时调用用户交互函数(如 read-from-minibuffer)会触发该错误。