Ошибки и устранение неполадок
Документация описывает зафиксированный объём экспериментального предварительного выпуска v0.0.18. Фактическая публикация и файлы загрузки указаны в GitHub Releases. Диагностика компилятора может меняться в ходе экспериментальной разработки. Сообщая о проблеме, укажите версию CLI, коммит Git, бэкенд, полную команду и минимальный исходный код.
Определите исполняемый файл Ku
Раздел «Определите исполняемый файл Ku»ku --versionku -hku 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 не должны запускать автоматическое повторное выполнение. Сохраните сведения запроса и бизнес-операции, затем установите реальное состояние выполнения. Проверка локального сайта не требует подключения к производственной БД.
Подробнее: руководство по диагностике в репозитории.