【发布时间】:2021-08-13 10:25:11
【问题描述】:
为什么捕获以下索引错误失败:
let
Source = "abc",
letter_list = Text.ToList(Source),
try_on_index_error = try letter_list{5}
in
try_on_index_error
try 语句不返回Error 记录。它一直抛出错误,就好像没有 try 存在一样。
在这种情况下,它按预期工作,返回 Error 记录作为查询的有效结果:
let
Source = "abc",
try_another_error = try Source + 1,
Error = try_another_error[Error]
in
Error
https://docs.microsoft.com/en-us/power-query/handlingerrors#catching-an-error-with-try-and-otherwise
https://docs.microsoft.com/en-us/powerquery-m/m-spec-consolidated-grammar#error-handling-expression
【问题讨论】:
-
对我来说,这看起来更像是一个错误,而不是一个很好的解释。似乎超出范围的索引应该是可以使用
try处理的东西,而不是用“意外错误”来中断查询。 -
看看Lazy Evaluation & Query Folding in Power BI / Power Query。如果您缓冲您的列表,它将按预期工作:
letter_list = List.Buffer(Text.ToList(Source)), -
干杯@ron,我认为这也会帮助其他人作为答案。 (您的解决方案工作正常。)我想知道的一件事是:我还运行了我的无缓冲代码以获得有效的项目访问,如
try letter_list{1}和这里Error记录 is 返回(当然有[Error][HasError] = false).
标签: powerbi powerquery m