Zig Academy · 课时

推断错误集合

让 Zig 为您收集错误。

第 4 / 4 课13 个步骤

推断错误集合 是 CoddyKit 上的免费 Zig Academy 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Zig Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Zig Academy 课程共包含 4 节课。

列出错误很繁琐

为函数可能返回的每个错误命名可能很麻烦,尤其是它还调用其他可能失败的函数时。Zig 可以推断错误集合。

省略错误集合

只写 !T,在感叹号前不写任何内容。Zig 会分析函数主体,并确定它可能产生的所有错误。

fn parse(s: []const u8) !u32 {
    // ...
}

编译器会收集错误

主体中的每个 try 和每个返回的错误,都会自动汇总到该函数的一个推断错误集合中。

if (s.len == 0) return error.Empty;

它始终保持准确

之后添加新的可能失败的调用时,推断集合会增长并包含该错误。您永远不必忘记更新手写列表。

跨调用进行推断

如果您的函数对另一个可能失败的调用使用了 try,被调用函数可能产生的错误也会合并到您的推断集合中。

const f = try open(path);

显式集合仍然更有优势

有时您需要固定的公共契约。在 ! 前命名集合,可以禁止集合之外的任何错误,而推断不会这样做。

fn load() FileError!Data {}

一行代码中的取舍

推断集合方便且会自动更新;显式集合精确且稳定。请根据契约是否必须保持不变来选择。

使用 @errorReturnTrace 检查

您仍然可以在运行时分析错误。在调试构建中,Zig 会保留一条错误返回跟踪,显示失败从哪里开始。

非常适合内部辅助函数

对于不需要严格公共接口的私有辅助函数,类型推断非常有用。让 Zig 在那里处理簿记工作即可。

仍然会进行完整检查

无论是推断的还是显式声明的,每个错误仍然必须由调用方处理。类型推断节省的是输入,不是安全性;编译器依然严格。

实用的默认选择

许多 Zig 函数直接使用 !T,让类型推断发挥作用。只有在您希望固定边界时,才保留命名错误集合。

快速检查

一个函数声明的返回类型是 !u32,感叹号前没有错误集合。Zig 会怎么做?

回顾

您了解了通过裸 !T 推断错误集合,了解了错误集合如何随函数体增长,以及何时显式指定集合更合适。✅

免费开始

用 AI 导师学习 Zig — 免费

在浏览器中编写并运行真实代码,获得全天候 AI 导师的即时帮助,并在网页或应用中继续学习。

课程
30
课程
120

常见问题解答

「推断错误集合」课时是免费的吗?

是的 — 「推断错误集合」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Zig Academy 课程的其余内容,请升级到 CoddyKit PRO。 Zig Academy 课程共包含 4 节课。

「推断错误集合」这节课中我会学到什么?

让 Zig 为您收集错误。 你通过在浏览器中直接运行的动手代码来练习 Zig Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Zig Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Zig Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。

「推断错误集合」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Zig Academy 课中编写并运行代码吗?

能。每节 Zig Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 错误集合与 !T 联合类型
  2. 从函数返回错误
  3. 使用 try 传播失败
  4. 推断错误集合
← 返回 Zig Academy