Megosztás a következőn keresztül:


Hibák

A Power Query M képletnyelvének hibája azt jelzi, hogy a kifejezés kiértékelésének folyamata nem tudott értéket létrehozni. A hibákat olyan operátorok és függvények okoznak, amelyek hibafeltételeket tapasztalnak, vagy a hibakifejezés használatával. A hibák kezelése a try kifejezéssel történik. Hiba felmerülésekor meg van adva egy érték, amely a hiba okának jelzésére használható.

Kifejezés kipróbálása

A próbakifejezés az értékeket és a hibákat rekordértékké alakítja, amely jelzi, hogy a próbakifejezés kezelt-e hibát, vagy sem, és a hiba kezelésekor kinyert helyes értéket vagy hibarekordot. Vegyük például a következő kifejezést, amely hibát jelez, majd azonnal kezeli azt:

try error "negative unit count"

Ez a kifejezés a következő beágyazott rekordértékre kiértékeli az előző egységár-példában szereplő , és [Message] mezőkereséseket.[HasError], [Error]

Hibarekord

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

Gyakori eset, hogy a hibákat alapértelmezett értékre cseréli. A próbakifejezés egy opcionális egyéb záradékkal is használható, amely csak kompakt formában érhető el:

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

Példa hiba

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

Az előző példa hozzáfér a Sales[UnitPrice] mezőhöz, és formázja az eredményt létrehozó értéket:

"Unit Price: 2"

Ha az Egységek mező nulla lett volna, akkor a UnitPrice mező hibát eredményezett volna, amelyet a kísérlet kezelt volna. Az eredményként kapott érték a következő lett volna:

"No Units"