錯誤
Power Query M 公式語言中的錯誤是一種指示,其指出評估運算式的流程可能不會產生值。 錯誤是由遇到錯誤條件的運算子和函式引發,或透過使用 error 運算式來引發。 錯誤是使用 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"