【发布时间】:2022-01-23 17:05:25
【问题描述】:
我是 Zig 的新手,正在尝试了解错误处理和错误集的工作原理。 如果我跑
const erro = error{Oops};
fn failingFunction() erro.Oops!void {
return erro.Oops;
}
test "returning an error" {
failingFunction() catch |err| {
try expect(err == erro.Oops);
return;
};
}
我收到一个错误:
error: expected type 'type', found 'erro'
fn failingFunction() erro.Oops!void {
^
./test.zig:45:31: note: referenced here
fn failingFunction() erro.Oops!void {
^
./test.zig:50:5: note: referenced here
failingFunction() catch |err| {
但是当我使用erro!void 而不是erro.Oops!void 作为函数返回类型时,测试通过了。为什么会这样?
请帮忙。错误联合在语言中是如何工作的?谢谢。
编辑:以上是修改后的功能。原来的功能是
fn failingFunction() error{Oops}!void {
return error.Oops;
}
来自这篇文章:https://ziglearn.org/chapter-1/ 在“错误”部分。我想尝试一下,所以出于好奇,我做了上面的事情。
【问题讨论】:
标签: error-handling compiler-errors set unions zig