Используйте with-exception-handler для процедурной обработки и guard для условного сопоставления перехватываемых error objects.
Кратко
LISPEX
(guard (e ((error-object? e) (error-object-message e))) (error "bad input"))Результат
OUTPUT
"bad input"Рабочий порядок
raise-continuableвозвращает результат handler в место raise; non-continuableraiseне может вернуться нормально.- Используйте документированные predicates/accessors error object, а не разбор отображённого текста диагностики.
- Если ни одна ветвь
guardне совпала, исходная ошибка поднимается заново без изменения.
Границы
- ResourceLimit не перехватывается, а host crashes не превращаются в удобные гостевые ошибки.