Lezen in het Engels

Delen via


Fouten

Een fout in de formuletaal Power Query M is een indicatie dat het proces voor het evalueren van een expressie geen waarde kan opleveren. Fouten worden gegenereerd door operators en functies die foutvoorwaarden tegenkomen of door de foutexpressie te gebruiken. Fouten worden verwerkt met behulp van de try-expressie . Wanneer er een fout optreedt, wordt een waarde opgegeven die kan worden gebruikt om aan te geven waarom de fout is opgetreden.

Expressie uitproberen

Een try-expressie converteert waarden en fouten naar een recordwaarde die aangeeft of de try-expressie een fout heeft verwerkt, of niet, en de juiste waarde of de foutrecord die is geëxtraheerd bij het verwerken van de fout. Denk bijvoorbeeld aan de volgende expressie die een fout genereert en deze vervolgens meteen afhandelt:

try error "negative unit count"

Deze expressie evalueert naar de volgende geneste recordwaarde, waarin de opzoekacties voor velden [HasError], [Error][Message] in het voorbeeld van de eenheidsprijs eerder worden uitgelegd.

Foutrecord

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

Een veelvoorkomend geval is het vervangen van fouten door standaardwaarden. De try-expressie kan worden gebruikt met een optionele component anders om alleen dat in een compacte vorm te bereiken:

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

Voorbeeld van een fout

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

In het vorige voorbeeld wordt het Sales[UnitPrice] veld geopend en wordt de waarde opgemaakt die het resultaat produceert:

"Unit Price: 2"

Als het veld Eenheden nul was, zou het UnitPrice veld een fout hebben gegenereerd die door de poging zou zijn verwerkt. De resulterende waarde zou dan zijn:

"No Units"