Песочница

Детерминированная обработка ошибок

Используйте 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-continuable raise не может вернуться нормально.
  • Используйте документированные predicates/accessors error object, а не разбор отображённого текста диагностики.
  • Если ни одна ветвь guard не совпала, исходная ошибка поднимается заново без изменения.

Границы

  • ResourceLimit не перехватывается, а host crashes не превращаются в удобные гостевые ошибки.