写点什么

5 分钟速读之 Rust 权威指南(十五)

用户头像
码生笔谈
关注
发布于: 2021 年 06 月 02 日
5分钟速读之Rust权威指南(十五)

错误处理

rust 对可靠性的执着延伸到了错误处理领域,错误分为两大类:可恢复错误与不可恢复错误,可恢复错误比如文件未找到,一般需要将它们报告给用户并再次尝试进行操作。而不可恢复错误往往就是 bug 的另一种说法,比如尝试访问超出数组结尾的位置等。


可能有两个不太恰当的比喻,不可恢复的错误在 JS 中比如试图调用不存在的方法(window.non_existent_fn())时会报错,而可恢复的错误比如在数组中获取超出长度的索引时得到 undefined。

不可恢复错误与 panic!

在 JS 中我们使用 throw 关键字抛出一个错误,rust 也提供了一个特殊的 panic! 宏。程序会在 panic! 宏执行时打印出一段错误提示信息,立即清理内存占用,然后退出程序。


foo();fn foo() {  panic!(123); // 主动抛出一个错误,}
复制代码


程序报错时也会触发 panic:


// 程序出错let arr = vec![1,2,3];arr[99]; // 报错,超出数组范围
复制代码


我们可以选择在报错后不进行任何清理内存占用,程序所使用过的内存只能由操作系统来进行回收,在 Cargo.toml 中配置:


[profile.dev] // 开发环境下直接结束程序panic = "abort"
复制代码


使用运行标识查看详细报错信息:


RUST_BACKTRACE=0 cargo run # 关闭跟踪信息RUST_BACKTRACE=1 cargo run # 显示跟踪信息信息RUST_BACKTRACE=full cargo run # 详细跟踪信息
复制代码


本节先介绍到这里,由于可恢复的错误内容有点多,两节放到一起的话五分钟就看不完了^_^。

发布于: 2021 年 06 月 02 日阅读数: 8
用户头像

码生笔谈

关注

欢迎关注「码生笔谈」公众号 2018.09.09 加入

前端、Rust干货分享,一起成为更好的Javascripter & Rustacean

评论

发布
暂无评论
5分钟速读之Rust权威指南(十五)