Перейти к содержимому
Русский

Ошибки и устранение неполадок

Документация описывает зафиксированный объём экспериментального предварительного выпуска v0.0.18. Фактическая публикация и файлы загрузки указаны в GitHub Releases. Диагностика компилятора может меняться в ходе экспериментальной разработки. Сообщая о проблеме, укажите версию CLI, коммит Git, бэкенд, полную команду и минимальный исходный код.

Определите исполняемый файл Ku

Раздел «Определите исполняемый файл Ku»
Терминал
ku --version
ku -h
ku check hello.ku

Если ku не найден, запустите исполняемый файл из каталога распаковки. В Windows используйте ku.exe. Если обычной сборке недостаёт Rust или библиотек компоновки, проверьте требования установки и сохраните полную структуру архива, а не копируйте только CLI.

Чтение диагностики

Раздел «Чтение диагностики»

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

Терминал
ku check --json hello.ku

Вывод имеет формат JSON Lines, одна диагностика на строку. Поля включают level, code, message, file, line, column, endLine, endColumn, notes и helps. При успехе вывода нет; отсутствие JSON не означает, что проверка не выполнялась.

Диагностика Частая причина Действие
E0105 Использование let Объявите переменную первым присваиванием
E0302 Условие if / while не типа bool Напишите явное логическое сравнение
E0601 Неизвестный модуль стандартной библиотеки Проверьте реальный путь модуля, например std.json
E0605 Отсутствует обязательный явный импорт Импортируйте модуль, например import fs from "std.fs"
E0901 Чтение перемещённого значения Явно клонируйте независимое значение либо используйте поддерживаемое синхронное заимствование
E0913 Заимствованный параметр async Используйте параметр с владением; если нужен оригинал, клонируйте его у вызывающего
E0918 &value в месте вызова Передайте обычный аргумент; заимствование объявляется в сигнатуре

Это обзор зарегистрированной диагностики, а не список всех ошибок. Текущий нормативный реестр: src/error.rs.

Ошибки выполнения имеют отдельный контракт

Раздел «Ошибки выполнения имеют отдельный контракт»

Значения domain/code у Error времени выполнения отличаются от кодов компилятора E. Некорректный JSON может вернуть json/parse_error; отсутствующий ключ объекта — object/missing_key. Используйте ? после потенциально ошибочного вызова либо прочитайте поля в try/catch.

import json from "std.json"
fn main() {
try {
json.parse("[1,]")?
} catch (error) {
println(error.domain)
println(error.code)
println(error.message)
}
}

Эта учебная программа намеренно вызывает обрабатываемую ошибку разбора. Сообщение byte N означает смещение в байтах UTF-8, начиная с нуля. Это не число символов рядом с китайским текстом или эмодзи.

Нативная сборка отклонена

Раздел «Нативная сборка отклонена»

Успешный ku check подтверждает только проверку фронтендом. У нативного C и LLVM свои пределы возможностей. Если конструкция явно отклоняется, проверьте матрицу поддержки. Увеличение тайм-аута или успех в другом бэкенде не подтверждает неподдерживаемый путь.

ku build --native file.ku без -o только записывает C. Для компиляции и компоновки исполняемого файла используйте ku build --backend c file.ku и установите инструменты C целевой платформы.

Ошибки БД execution_unknown и execution_completed_without_result не должны запускать автоматическое повторное выполнение. Сохраните сведения запроса и бизнес-операции, затем установите реальное состояние выполнения. Проверка локального сайта не требует подключения к производственной БД.

Подробнее: руководство по диагностике в репозитории.