Skip to content

Commit 04818ec

Browse files
authored
fix: 移除错误集合推导的错误说明 (#215)
1 parent faabae8 commit 04818ec

File tree

1 file changed

+7
-5
lines changed

1 file changed

+7
-5
lines changed

course/basic/error_handle.md

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ outline: deep
4040

4141
<<<@/code/release/error_handle.zig#JustOneError1
4242

43-
[自动推断](#合并和推断错误)函数返回的错误集时,会经常用到这种写法。
43+
[自动推断](#合并和推断错误) 函数返回的错误集时,会经常用到这种写法。
4444

4545
## 全局错误集
4646

@@ -172,14 +172,16 @@ outline: deep
172172

173173
::: info 🅿️ 提示
174174

175-
> _当函数返回自动推导的错误集时,相对的这个函数会变成一个类泛型函数(因为这需要编译器在编译时进行推导),因此在执行某些操作时会变得有些不方便,例如获取函数指针或者在不同构建目标之间保持相同的错误集合。另外,推导错误和递归并不兼容。_
175+
> _当函数返回自动推导的错误集时,相对的这个函数会变成一个类泛型函数(因为这需要编译器在编译时进行推导),因此在执行某些操作时会变得有些不方便,例如获取函数指针或者在不同构建目标之间保持相同的错误集合。_
176+
>
177+
> _注意,错误集推导和递归并不兼容。_
176178
177-
上面这句话看起来有点云里雾里,我们来两个例子来说明就可以
179+
上述内容可能不够清晰,用两个例子作为说明
178180

179181
1. 不同构建目标之间可能存在着专属于架构的错误定义,这使得在不同架构上构建出来的代码的实际错误集并不相同,函数也同理(与 cpu 指令集实现有关)。
180-
2. 当我们使用自动推导时,推导出的错误集是最小错误集,故可能一个函数被推导出 `ErrorSetOne!type``ErrorSetTwo!type` 两个错误集,这就使得在递归上出现了不兼容,不过可以使用 `switch` 来匹配错误集来解决该问题
182+
2. 当我们使用自动推导时,推导出的错误集是最小错误集,故可能一个函数被推导出 `ErrorSetOne!type``ErrorSetTwo!type` 两个错误集,这会使得在递归上出现不兼容
181183

182-
对于上面的问题,其实更好的解决办法就是显式声明一个错误集,这会明确告诉编译器返回的错误种类都有什么
184+
对于上述问题,解决办法是显式声明一个错误集,这会明确告诉编译器返回的错误集合都包含哪些错误
183185

184186
> _根据文档说明,上面的这些限制可能在未来会被改善。_
185187

0 commit comments

Comments
 (0)