Σφάλματα και αντιμετώπιση προβλημάτων
Η τεκμηρίωση περιγράφει το οριστικοποιημένο εύρος της πειραματικής προέκδοσης v0.0.18. Η πραγματική δημοσίευση και οι λήψεις καταγράφονται στα GitHub Releases. Τα διαγνωστικά του μεταγλωττιστή μπορούν να αλλάξουν κατά την πειραματική ανάπτυξη. Σε αναφορές προβλημάτων συμπεριλάβετε έκδοση CLI, commit Git, backend, πλήρη εντολή και ελάχιστη πηγή.
Αναγνωρίστε το εκτελέσιμο Ku
Ενότητα με τίτλο «Αναγνωρίστε το εκτελέσιμο Ku»ku --versionku -hku 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 δεν πρέπει να προκαλούν αυτόματη επανάληψη εκτέλεσης. Διατηρήστε στοιχεία αιτήματος και επιχειρησιακής ενέργειας και πρώτα εξακριβώστε την πραγματική κατάσταση εκτέλεσης. Η επαλήθευση του τοπικού ιστοτόπου δεν απαιτεί σύνδεση με παραγωγική βάση δεδομένων.
Για λεπτομέρειες δείτε τον οδηγό διαγνωστικών του αποθετηρίου.