我是 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/在“错误”部分。我想尝试一下,所以出于好奇,我做了上面的事情。