Rust 有一套独特的处理异常情况的机制,它并不像其它语言中的 try 机制那样简单。

首先,程序中一般会出现两种错误:可恢复错误、不可恢复错误

可恢复错误的典型案例是文件访问错误,如果访问一个文件失败,有可能是因为它正在被占用,是正常的,我们可以通过等待来解决。

但还有一种错误是由编程中无法解决的逻辑错误导致的,例如访问数组末尾以外的位置。

大多数编程语言不区分这两种错误,并用 Exception (异常)类来表示错误。在 Rust 中没有 Exception。

对于可恢复错误用 Result<T, E> 类来处理,对于不可恢复错误使用 panic! 宏来处理

可恢复错误

此概念十分类似于 Java 编程语言中的异常。

实际上在 C 语言中我们就常常将函数返回值设置成整数来表达函数遇到的错误

在 Rust 中通过 Result<T, E> 枚举类作返回值来进行异常表达:

在 Rust 标准库中可能产生异常的函数的返回值都是 Result 类型的