Rust 程序设计(第 2 版)
Jim Blandy, Jason Orendorff, Leonora F. S. Tindall
软件工程师
1469 人已学习
立即订阅
登录后,你可以任选4讲全文学习
推荐试读
换一换
课程目录
已完结/共 41 讲
时长 02:41
时长 06:30
时长 10:04
时长 01:05
时长 50:06
时长 31:35
时长 34:39
时长 29:11
时长 37:15
时长 23:44
时长 44:19
时长 29:54
时长 39:01
时长 01:38
时长 01:15
时长 00:37
Rust 程序设计(第 2 版)
15
15
1.0x
00:00/00:00
登录|注册

第 7 章 错误处理

我知道只要活得足够久,这种事就一定会发生。
——萧伯纳论死亡
Rust 的错误处理方法很不寻常,值得用单独的一章来讨论。这里没有什么深奥的编程思想,只是对你来说可能有点儿新而已。本章介绍了 Rust 中的两类错误处理:panic 和 Result
普通错误使用 Result 类型来处理。Result 通常用以表示由程序外部的事物引发的错误,比如错误的输入、网络中断或权限问题。这些问题并不是意料之中的,在没有任何 bug 的程序中也可能会不时出现。虽然本章大部分内容是关于 Result 的,但我们会先介绍 panic,因为它相对来说比较简单。
panic 针对的是另一种错误,即那种永远不应该发生的错误。

7.1 panic

当程序遇到下列问题的时候,就可以断定程序自身存在 bug,故而会引发 panic:
数组越界访问;
整数除以 0;
在恰好为 ErrResult 上调用 .expect()
断言失败。
panic!() 是一种宏,用于处理程序中出现错误的情况。当你的代码检测到出现错误并需要立即触发 panic 时,就可以使用这个宏。panic!() 可以接受类似于 println!() 的可选参数表,用于构建错误消息。)
以上情况的共同点是它们都由(不客气地说)程序员的错误所导致。而行之有效的一条经验法则是:“不要 panic”。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

Rust 异常处理方法包括 panic 和 Result 两种类型。panic 用于处理永远不应该发生的错误,如数组越界访问、整数除以 0 等;而 Result 用于处理由程序外部的事物引发的错误,如错误的输入、网络中断或权限问题。文章介绍了 panic 的处理方式,包括展开调用栈和中止进程,以及如何使用 catch_unwind() 函数捕获调用栈展开,使线程继续运行。此外,文章还介绍了 Result 类型,指出了其在函数执行失败时返回成功结果或错误结果的特点,以及如何使用 match 表达式来处理 Result 类型。总的来说,本文通过介绍 Rust 中的错误处理方法,帮助读者了解如何处理不同类型的错误,使程序更加健壮。文章还介绍了 Result 类型的多个有用方法,如 is_ok()、ok()、err()、unwrap_or() 等,以及 Result 类型的别名和打印错误的方法。这些内容丰富了读者对 Rust 错误处理的理解,为他们在实际编程中处理错误提供了有力的工具。文章还指出 Rust 要求程序员在每个可能发生错误的地方做出某种决策,并将其记录在代码中,以及 Rust 会检查 Result 值是否被用过了,这样你就不会意外地让错误悄悄溜过去。文章最后指出,Rust 在错误处理方面比其他语言要严格一些,但对系统编程来说,这绝对是值得的。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Rust 程序设计(第 2 版)》
立即购买
登录 后留言

精选留言

由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论
显示
设置
留言
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部