Песочница

Каталог ошибок и предупреждений

Стабильная диагностика распределена по этапам и кодам, чтобы различать чтение, нормализацию, выполнение, предупреждения и ограничения ресурсов.

Как рассуждать

  • E300–E340 охватывают несвязанные имена, применение, число аргументов, присваивание, пары, диапазоны, типы, числа, контексты значений, letrec, пользовательские ошибки, исключения и использованные продолжения выхода.
  • E1xx относится к чтению и статической нормализации, а W2xx и W3xx относятся к упорядоченным предупреждениям.
  • ResourceLimit намеренно находится вне перехватываемых E3xx и сообщается отдельным исходом.

Стабильные коды выполнения

КодУсловиеФаза / перехват
E300 / E303несвязанное чтение / set! несвязанного именивыполнение / перехватывается
E301 / E302применение непроцедуры / неверное число аргументоввыполнение / перехватывается
E310 / E311 / E312пара или список / диапазон / тип примитивавыполнение / перехватывается
E313 / E314деление на ноль / не конечный результатвыполнение / перехватывается
E320 / E321неверное число значений / раннее чтение letrecвыполнение / перехватывается
E330 / E331 / E332пользовательская ошибка / неперехваченный raise / возврат из непродолжаемого обработчикавыполнение / зависит от сигнала
E340продолжение выхода уже не активновыполнение / перехватывается после потребления
W330устаревающий вызов %, лучше использовать moduloпредупреждение выполнения / один раз на место вызова
W331устаревающий вызов list-first или list-rest, лучше использовать first или restпредупреждение выполнения / один раз на место вызова
ResourceLimitобъявленный предел рекурсии или ресурсовресурс / не перехватывается как E3xx

Частая ошибка

Коды являются стабильными контрактами только там, где их закрепляет единая спецификация среды выполнения.

Куда дальше

Как читать диагностику в работающей программе, показывает руководство, а как после неё восстанавливается правило, показывает практическая страница.

Ошибки, предупреждения и диагностика · Детерминированная обработка ошибок