Когда это нужно
Сначала определите этап диагностики. Ошибка чтения требует исправить написание, ошибка нормализации — форму конструкции, а ошибка выполнения описывает допустимую форму, не сработавшую при запуске.
Проверьте запуском
(guard (e (else (error-object-message e))) (car 1))Наблюдаемый результат
"car: expected a pair, got 1"Разбор примера
car получает 1 вместо пары и выдаёт перехватываемую ошибку выполнения. guard принимает объект ошибки и возвращает его стабильное сообщение. Программа завершается строкой, а не трассировкой стека среды.
Как рассуждать
- Ошибки выполнения используют коды E3xx, стабильные шаблоны, детерминированную печать проблемных значений и диапазон охватывающего вызова.
- Предупреждения — упорядоченные наблюдения. Настоящий вызов
%выдаёт W330 перед передачей работыmodulo; настоящие вызовыlist-firstиlist-restвыдают W331 передcarиcdr. Каждое место исходника предупреждает один раз, перекрывающее связывание не предупреждает, а последующая ошибка не удаляет уже записанное предупреждение. - Первая неперехваченная ошибка прерывает выполнение без трассировки стека среды; исчерпание ресурсов остаётся вне перехватываемых E3xx.
Быстрый выбор
| Класс | Когда возникает | Первое действие |
|---|---|---|
| E1xx чтение | исходник нельзя превратить в данные | исправить выделенный токен или разделитель |
| E2xx нормализация | статическая форма неверна | проверить написание, положение и арность формы |
| E3xx выполнение | вычисление дошло до недопустимой операции | проверить названную процедуру и проблемные значения |
| W3xx предупреждение | устаревающая поверхность, выполнение продолжается | перейти к указанной замене |
| ресурсный исход | достигнут потолок профиля | уменьшить работу или выбрать нужный профиль |
Частая ошибка
Предупреждение не является stdout и не должно переставляться или сливаться с диагностикой.
В новом коде используйте modulo, first и rest. Устаревающие написания
остаются исполнимыми только для совместимости.
Текущие границы
- Паника платформы, пустой сбой и недетерминированный текст среды не являются допустимой гостевой диагностикой.
Куда дальше
Точный поиск кодов находится в каталоге диагностик, а проверка до решения — в руководстве по ошибкам.