Відповіді:
До речі, альтернативним варіантом може бути щось на зразок:
(let ((error t))
(unwind-protect
(prog1 (call-function)
(setq error nil))
(when error (cleanup))))
Перевага полягає в тому, що ви уникаєте лову та повторного скидання помилки, а це означає, що, наприклад, налагоджувач покаже вам правильний зворотний шлях (той, що відповідає фактичному джерелу помилки, а не той, що відповідає вам, повторно викидаючи чужу помилку ).
Ще одна відмінність полягає в тому, що cleanupбуде викликано не тільки помилка, але й якщо код буде перервано a C-gабо закликом до throw.
quitне є errorсеред батьків). IOW ви ван також зловити його , condition-caseале для цього вам потрібно покласти quitразом з error. Звичайно, це все ще не вирішить справу з кидком.
condition-caseзловитиkeyboard-quit?