Μετάβαση στο περιεχόμενο
Ελληνικά

Σφάλματα και αντιμετώπιση προβλημάτων

Η τεκμηρίωση περιγράφει το οριστικοποιημένο εύρος της πειραματικής προέκδοσης v0.0.18. Η πραγματική δημοσίευση και οι λήψεις καταγράφονται στα GitHub Releases. Τα διαγνωστικά του μεταγλωττιστή μπορούν να αλλάξουν κατά την πειραματική ανάπτυξη. Σε αναφορές προβλημάτων συμπεριλάβετε έκδοση CLI, commit Git, backend, πλήρη εντολή και ελάχιστη πηγή.

Τερματικό
ku --version
ku -h
ku check hello.ku

Αν δεν βρεθεί το ku, καλέστε το εκτελέσιμο από τον κατάλογο αποσυμπίεσης. Χρησιμοποιήστε ku.exe στα Windows. Αν από την προεπιλεγμένη κατασκευή λείπουν 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 είναι μετατόπιση σε byte UTF-8 με αρχή το μηδέν. Δεν είναι πλήθος χαρακτήρων γύρω από κινεζικό κείμενο ή emoji.

Η επιτυχία του ku check αποδεικνύει μόνο ότι ολοκληρώθηκε ο έλεγχος του frontend. Το εγγενές C και το LLVM έχουν ξεχωριστά όρια δυνατοτήτων. Ελέγξτε τον πίνακα υποστήριξης όταν μια κατασκευή απορρίπτεται ρητά. Η αύξηση του ορίου χρόνου ή η επιτυχία σε άλλον backend δεν επαληθεύει τη μη υποστηριζόμενη διαδρομή.

Το ku build --native file.ku χωρίς -o γράφει μόνο C. Για μεταγλώττιση και σύνδεση εκτελέσιμου, χρησιμοποιήστε ku build --backend c file.ku και εγκαταστήστε τα εργαλεία C του στόχου.

Τα σφάλματα βάσης δεδομένων execution_unknown και execution_completed_without_result δεν πρέπει να προκαλούν αυτόματη επανάληψη εκτέλεσης. Διατηρήστε στοιχεία αιτήματος και επιχειρησιακής ενέργειας και πρώτα εξακριβώστε την πραγματική κατάσταση εκτέλεσης. Η επαλήθευση του τοπικού ιστοτόπου δεν απαιτεί σύνδεση με παραγωγική βάση δεδομένων.

Για λεπτομέρειες δείτε τον οδηγό διαγνωστικών του αποθετηρίου.