外观
错误处理篇:与错误共存的艺术
小螃蟹说
写真实项目,你会惊讶:一半的代码在处理"可能出错"。文件可能打不开、网络可能断、用户可能乱输入——Rust 用 Result 和 Option 把这些"意外"明明白白地摆在台面上。
这一篇不讲语法基础(第 2/5/8 章讲过了),讲真实项目里的错误处理决策:
- 什么时候该
unwrap,什么时候该商量 ?能用在哪些地方,不能用在哪些地方- 错误消息怎么写,用户才看得懂
- 自定义错误类型怎么设计
- 生态里最流行的两个错误工具:
anyhow和thiserror
这一篇的雷区清单
| 雷区 | 一句话 |
|---|---|
| 1 | unwrap 满天飞,一炸炸一片 |
| 2 | main 里想用 ?,编译器不同意 |
| 3 | 错误被悄悄吞掉,程序带病运行 |
| 4 | expect 的话说了等于没说 |
| 5 | 拿 String 当错误,追查无门 |
| 6 | 错误套错误,match 套 match |
| 7 | 应用用 anyhow,库用 thiserror |
| 8 | Option 和 Result 混着用,方法链不会接 |