Как рассуждать
- 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 |
Частая ошибка
Коды являются стабильными контрактами только там, где их закрепляет единая спецификация среды выполнения.
Куда дальше
Как читать диагностику в работающей программе, показывает руководство, а как после неё восстанавливается правило, показывает практическая страница.
Ошибки, предупреждения и диагностика · Детерминированная обработка ошибок