语境
对语言非常陌生,所以请耐心等待。我正在编写一个超级基本函数来打印出传递给程序的命令行参数。这是关键逻辑:
// already created allocator (std.heap.ArenaAllocator) and iterator (std.process.ArgIterator)
var idx: u16 = 0;
while (true) {
var arg = iterator.next(&allocator.allocator) catch |err| {
// ...
};
if (arg == null) {
print("End of arguments, exiting.", .{});
break;
}
print("Argument {d}: {s}", .{idx, arg});
idx += 1;
}
但是,我收到一条错误消息:
error: expected error union type, found '?std.process.NextError![:0]u8'
var arg = iterator.next(&allocator.allocator) catch |err| return err;
我认为这个问题与NextError
返回可选错误联合的事实有关。我不能确定,因为我没有找到任何涵盖这个特定案例的文档。
问题
我通过删除捕获并假装返回类型的错误部分不存在来使此代码工作。但问题是,捕捉该错误的正确方法是什么?