Errors
Chyba v jazyku vzorca Power Query M indikuje, že proces vyhodnocovania výrazu nebol schopný vyprodukovať určitú hodnotu. Chyby sú vyvolávané operátormi a funkciami, ktoré sa stretávajú s podmienkami chyby , alebo pomocou výrazu error . Chyby sa spracováva pomocou výrazu "try ". Pri chybe špecifikovaná hodnota sa dá použiť na označenie jej príčiny.
Výraz "Try" konvertuje hodnoty a chyby na hodnotu záznamu, ktorá označuje, či sa vyhodnotila chyba alebo nie, a či sa pri spracovávaní chyby vyhodnotila správna hodnota alebo záznam chyby. Uvažujme napríklad o nasledujúcom výraze, ktorý vyvolá chybu, a potom ho okamžite spracuje:
try error "negative unit count"
Tento výraz poskytuje nasledujúcu hodnotu vnoreného záznamu, pričom vysvetlí [HasError], [Error]
vyhľadávania polí a [Message]
v uvedenom príklade jednotkovej ceny.
[
HasError = true,
Error =
[
Reason = "Expression.Error",
Message = "negative unit count",
Detail = null
]
]
Bežným prípadom je nahradenie chýb predvolenými hodnotami. Na dosiahnutie iba želanej formy možno použiť výraz "Try" s voliteľnou klauzulou "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
Predchádzajúci príklad pristupuje k poľu Sales[UnitPrice]
a formátuje hodnotu s výsledkom:
"Unit Price: 2"
Ak by pole Jednotky bolo nulové, UnitPrice
pole by vyvolalo chybu, ktorá by sa spracovala pokusom. Výsledná hodnota by potom bola:
"No Units"