错误处理
在软件中错误是很常见的事实。当有时候软件运行错误的时候,Rust有很多处理这些场景的特性。在很多情况下,Rust要求你确认每一个错误发生的可能,并在代码编译前就采取相应的行为。这个必要前提会让你的程序更加健壮:确保你会提前发现错误,并处理得当,在你将代码部署到生产环境之前。
Rust将错误分为两大类:可恢复的(recoverable
)和不可恢复的(unrecoverable
)。对于可恢复错误,比如文件未找打错误,我们很可能只是想向用户报告问题并重试操作。不可恢复错误总是系统性bugs,像尝试访问一个超过数组最尾端的位置,此时,我们就会想要程序立刻停止运行。
大多数编程语言无法区分这两种错误,并且都使用同样的方式,使用如exceptions机制。Rust没有exceptions。而是有一个Result<T, E>
的类型来处理可恢复错误。另外,当程序发生一个不可恢复的错误,Rust用panic!
宏来中止运行程序。
这一章,首次讨论panic!宏
,然后讨论有关Result<T, E>
返回的值。
另外,我们还要探索如何决定一个错误应该是恢复或者是停止运行。