閱讀英文

共用方式為


錯誤

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"