错误
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"