Power Query中try语句无法捕获列表索引越界错误问题求解
索引错误捕获失效的原因
这是Power Query的M语言的固有语法特性:
- 直接使用
列表{索引}语法访问超出边界的索引时,触发的是列表访问的原生急切错误,该错误的执行优先级高于try表达式的捕获逻辑,会直接抛出,不会被try捕捉。 - 你给出的第二个示例中,
Source + 1属于运算阶段的常规运行时错误,属于try的默认捕获范围,因此可以正常返回错误记录。
修复方案
如果需要捕获列表索引越界错误,需要在索引取值语法后添加?运算符,明确告知M语言解释器该索引访问允许返回错误供后续逻辑捕获,修改后代码如下:
let Source = "abc", letter_list = Text.ToList(Source), try_on_index_error = try letter_list{5}? in try_on_index_error
修改后运行即可正常返回包含错误信息的记录,和你第二个示例的捕获效果一致。
内容的提问来源于stack exchange,提问作者pylo
相关产品推荐
相关产品推荐

