Нет глобального обработчика ошибок, потому что это не философия Common Lisp. Если вы хотите обрабатывать ошибки, делайте это с легкостью.
1) Создайте функцию, которая использует HANDLER-CASE или HANDLER-BIND, чтобы установить соответствующие обработчики ошибок и перехватывать ошибки вокруг формы, которая должна быть оценена. Что-то вроде
(DEFUN MY-EVAL (FORM)
(HANDLER-CASE (ФОРМА EVAL)
(ОШИБКА (С) ...)
(МОЯ ОШИБКА (С) ...)
...))
Эта функция может быть определена в вашем коде C и вызвана.
2) Используйте функции, которые создает ECL, которые перехватывают все ошибки. Наиболее важным является si_safe_eval (форма, окружение, error_value). Он оценивает ФОРМУ lisp в ОКРУЖАЮЩЕЙ СРЕДЕ (обычно Cnil) и возвращает свой вывод или ERROR_VALUE, если он получил какую-то ошибку.
Некоторые примеры, которые используют ту или иную технику:
http://thread.gmane.org/gmane.lisp.ecl.general/5365 (2-е сообщение)
http://thread.gmane.org/gmane.lisp.ecl.general/8526/focus=8529