Spec-Zone.ru › Elisp

Как Emacs обрабатывает ошибки

При возникновении ошибки, signal ищет активный обработчик ошибки. Обработчик — это последовательность выражений Lisp, предназначенных для выполнения в случае возникновения ошибки в части программы Lisp. Если для ошибки есть соответствующий обработчик, он выполняется, и управление возвращается после обработчика. Обработчик выполняется в среде condition-case, которая его установила; все вызываемые функции в этой condition-case уже завершены, и обработчик не может вернуться к ним.

Если для ошибки нет подходящего обработчика, он завершает текущую команду и возвращает управление циклу команд редактора. (Цикл команд имеет неявный обработчик для всех типов ошибок.) Обработчик цикла команд использует символ ошибки и связанные данные для вывода сообщения об ошибке. Вы можете использовать переменную command-error-function для управления этим процессом:

Переменная: command-error-function

Эта переменная, если она не nil, задает функцию для обработки ошибок, которые возвращают управление циклу команд Emacs. Функция должна принимать три аргумента: data, список того же формата, что и тот, к которому condition-case привязывалась к своей переменной; context, строка, описывающая ситуацию, в которой произошла ошибка, или (чаще) nil; и caller, функция Lisp, которая вызвала примитив, который сообщил об ошибке.

Ошибка, у которой нет явного обработчика, может вызвать отладчик Lisp. Отладчик активируется, если переменная debug-on-error (см. Отладка ошибок) не nil. В отличие от обработчиков ошибок, отладчик работает в среде ошибки, так что вы можете проверить значения переменных точно так, как они были в момент ошибки.

Copyright © 1990-1996, 1998-2022 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Processing-of-Errors.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API