Ошибки
Когда Emacs Lisp пытается вычислить форму, которую по какой-либо причине невозможно вычислить, он сигнализирует об ошибке.
Когда сигнализируется ошибка, стандартная реакция Emacs — вывести сообщение об ошибке и прервать выполнение текущей команды. В большинстве случаев это правильно, например, если нажать C-f в конце буфера.
В сложных программах простое прерывание может быть нежелательным. Например, программа могла внести временные изменения в структуры данных или создать временные буферы, которые следует удалить до завершения программы. В таких случаях следует использовать unwind-protect, чтобы задать выражения очистки, которые будут вычислены в случае ошибки. (См. Очистка после нелокальных выходов.) Иногда может потребоваться продолжить выполнение программы, несмотря на ошибку в подпрограмме. В таких случаях следует использовать condition-case, чтобы задать обработчики ошибок, восстанавливающие управление в случае ошибки.
Чтобы сообщить о проблеме, не прерывая выполнение текущей команды, рассмотрите возможность выдачи предупреждения. См. Выдача предупреждений.
Не поддавайтесь искушению использовать обработку ошибок для передачи управления из одной части программы в другую; вместо этого используйте catch и throw. См. Явные нелокальные выходы: catch и throw.
Copyright © 1990-1996, 1998-2026 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Errors.html