11.7.3 Ошибки

Когда Emacs Lisp пытается вычислить форму, которую по какой-то причине невозможно вычислить, он сигнализирует об ошибке.

Когда сигнализируется об ошибке, по умолчанию Emacs выводит сообщение об ошибке и завершает выполнение текущей команды. В большинстве случаев это правильное поведение, например, если вы нажимаете C-f в конце буфера.

В сложных программах простое завершение может быть не тем, что вам нужно. Например, программа могла внести временные изменения в структуры данных или создать временные буферы, которые должны быть удалены до завершения программы. В таких случаях вы бы использовали unwind-protect, чтобы установить выражения очистки, которые будут выполнены в случае ошибки. (См. Очистка после нелокальных выходов.) Иногда вы можете пожелать, чтобы программа продолжила выполнение, несмотря на ошибку в подпрограмме. В таких случаях вы бы использовали condition-case, чтобы установить обработчики ошибок для восстановления управления в случае ошибки.

Для сообщения о проблемах без завершения выполнения текущей команды рассмотрите возможность выдачи предупреждения. См. Сообщение предупреждений.

Сопротивляйтесь соблазну использовать обработку ошибок для передачи управления от одной части программы к другой; вместо этого используйте catch и throw. См. Явные нелокальные выходы: catch и throw.