错误

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"