Ανάγνωση στα Αγγλικά

Κοινή χρήση μέσω


Σφάλματα

Ένα σφάλμα στη γλώσσα τύπων Power Query M αποτελεί ένδειξη ότι η διαδικασία αξιολόγησης μιας παράστασης δεν μπόρεσε να δημιουργήσει μια τιμή. Τα σφάλματα προκύπτουν από τελεστές και συναρτήσεις που συναντούν συνθήκες σφάλματος ή χρησιμοποιώντας την παράσταση σφάλματος . Ο χειρισμός των σφαλμάτων γίνεται με χρήση της παράστασης try . Όταν παρουσιάζεται ένα σφάλμα, καθορίζεται μια τιμή που μπορεί να χρησιμοποιηθεί για να υποδείξει γιατί παρουσιάστηκε το σφάλμα.

Παράσταση try

Μια παράσταση try μετατρέπει τιμές και σφάλματα σε μια τιμή εγγραφής που υποδεικνύει εάν η παράσταση try χειρίστηκε ένα σφάλμα ή όχι και είτε την κατάλληλη τιμή είτε την εγγραφή σφάλματος που εξήγαγε κατά τον χειρισμό του σφάλματος. Για παράδειγμα, εξετάστε την παρακάτω παράσταση που προκαλεί σφάλμα και, στη συνέχεια, την χειρίζεται αμέσως:

try error "negative unit count"

Αυτή η παράσταση έχει ως αποτέλεσμα την ακόλουθη ένθετης τιμή εγγραφής, εξηγώντας τις [HasError], [Error]αναζητήσεις πεδίων και [Message] στο προηγούμενο παράδειγμα τιμής μονάδας.

Εγγραφή σφάλματος

[
    HasError = true,
    Error =
        [  
            Reason = "Expression.Error",
            Message = "negative unit count",
            Detail = null
        ]
]

Μια συνηθισμένη περίπτωση είναι η αντικατάσταση σφαλμάτων με προεπιλεγμένες τιμές. Η παράσταση try μπορεί να χρησιμοποιηθεί με έναν προαιρετικό όρο otherwise για να επιτύχει ακριβώς αυτό σε μια συμπαγή μορφή:

try error "negative unit count" otherwise 42
// equals 42

Παράδειγμα σφάλματος

let Sales =
        [
        ProductName = "Fishing rod",
            Revenue = 2000,
            Units = 1000,
            UnitPrice = if Units = 0 then error "No Units"
                    else Revenue / Units
        ],

    //Get UnitPrice from Sales record
        textUnitPrice = try Number.ToText(Sales[UnitPrice]),
    Label = "Unit Price: " &
        (if textUnitPrice[HasError] then textUnitPrice[Error][Message]
        //Continue expression flow
            else textUnitPrice[Value])
in
    Label

Το προηγούμενο παράδειγμα αποκτά πρόσβαση στο Sales[UnitPrice] πεδίο και μορφοποιεί την τιμή που παράγει το αποτέλεσμα:

"Unit Price: 2"

Εάν το πεδίο Units ήταν μηδέν, τότε το UnitPrice πεδίο θα είχε προκαλέσει ένα σφάλμα το οποίο θα είχε αντιμετωπιστεί από την try. Η τιμή που προκύπτει τότε θα ήταν:

"No Units"