Rust 错误处理

17 Mar 2025 | 阅读 2 分钟
  • 错误处理 是一种机制,Rust 通过它确定发生错误的可能性,并允许您在代码编译之前采取一些措施。
  • 这种机制使程序更加健壮,因为它使您能够在部署代码进行生产之前发现并处理错误。
  • Rust 编程语言不包含异常。

Rust 中有两种类型的错误

  • 不可恢复的错误
  • 可恢复的错误

Rust Error handling
  • 可恢复的错误:可恢复的错误是报告给用户的错误,用户可以重试该操作。可恢复的错误并不严重到需要完全停止该过程。它由 Result<T,E> 表示。可恢复错误的一个例子是“文件未找到”。
    其中 T & E 是泛型参数。
    T-> 它是在成功情况下以“OK”变体返回的值的类型。
    E-> 它是在失败情况下以“Err”变体返回的错误的类型。
  • 不可恢复的错误:当 Rust 报告一个不可恢复的错误时,panic! 宏会停止程序的执行。例如: “除以零”是一个不可恢复的错误的例子。

可恢复的错误 vs 不可恢复的错误

可恢复的错误是可以以某种方式恢复的错误,而不可恢复的错误是无法以任何方式恢复的错误。

让我们看看预期行为的场景

在上面的例子中,“100”是一个字符串,所以我们不能确定上面的例子是否有效。 这是预期的行为。 因此,它是一个可恢复的错误。

  • 意外的行为

Rust Error handling

assert!:当我们想要声明某些东西为真时,使用 assert!。 如果它不正确并且错误足够严重,则程序停止执行。 如果表达式在运行时未计算为 true,它会调用 panic!

让我们看一个简单的例子

输出

Rust Error handling

在上面的例子中,x 的值为 false,并且 assert! 宏中的条件为 false。 因此,assert! 在运行时调用 panic!。

unreachable!:unreachable! 宏用于不可到达的代码。 该宏很有用,因为编译器无法确定不可到达的代码。 不可到达的代码由 unreachable! 在运行时确定。

让我们看一个简单的例子

输出

Rust Error handling

在上面的例子中,get_number() 函数返回的值为 5,它与每个模式匹配,但与任何模式都不匹配。 因此,unreachable! 宏调用 panic! 宏。