Číst v angličtině

Sdílet prostřednictvím


Chyby

Chyba v jazyce vzorců Power Query M značí, že proces vyhodnocení výrazu nemůže vytvořit hodnotu. Chyby jsou vyvolány operátory a funkcemi, u kterých dochází k chybám , nebo pomocí výrazu chyby . Chyby se zpracovávají pomocí výrazu try . Při vyvolání chyby je zadána hodnota, která se dá použít k označení, proč k chybě došlo.

Výraz Try

Výraz try převede hodnoty a chyby na hodnotu záznamu, která označuje, jestli výraz try zpracoval chybu, nebo ne, a buď správnou hodnotu, nebo záznam chyby extrahovaný při zpracování chyby. Představte si například následující výraz, který vyvolá chybu, a pak ji okamžitě zpracuje:

try error "negative unit count"

Tento výraz se vyhodnotí jako následující vnořená hodnota záznamu, která [HasError], [Error]vysvětluje vyhledávání polí [Message] v příkladu jednotkové ceny dříve.

Záznam chyby

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

Běžným případem je nahrazení chyb výchozími hodnotami. Výraz try lze použít s volitelnou klauzulí otherwise k dosažení pouze toho v kompaktní podobě:

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

Příklad chyby

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

Předchozí příklad přistupuje k Sales[UnitPrice] poli a formátuje hodnotu, která vytvoří výsledek:

"Unit Price: 2"

Pokud by pole Jednotky bylo nula, pole UnitPrice by vyvolalo chybu, která by byla zpracována pokusem. Výsledná hodnota by pak byla:

"No Units"