错误处理

在软件中,错误是家常便饭,因此 Rust 有数个用于处理某些东西出了岔子情形的特性。在许多情况下,Rust 都要求编程者知晓某种错误的可能性,进而在代码编译之前就采取一些措施。这样的要求通过确保编程者在将其代码部署到生产环境之前,会发现错误并对其进行恰当处理,而使得他们的程序更为健壮!

Rust 将错误分组为两个主要类别: 可恢复(recoverable)不可恢复(unrecoverable) 错误。对于可恢复错误,比如 文件未找到 错误,大多数情况下只要将该故障汇报给用户,并重试该操作。而不可恢复错误则总是代码错误的表征,像是尝试访问超出数组末端的某个位置,进而因此就要立即停止该程序。

大多数语言都没有区分这两种错误,而以同样方式,使用诸如异常的机制处理这两种错误。Rust 没有异常。相反,Rust 有着用于可恢复错误的类型 Result<T, E>,以及在程序发生了不可恢复错误时,停止程序执行的 panic! 宏(the panic! macro)。本章将首先涵盖对 panic! 的调用,并在随后讲解那些返回的 Result<T, E> 值。此外,这里会对在决定是否要尝试从错误中恢复,还是要停止程序的执行时的诸多考虑,进行探讨。

Last change: 2023-11-30, commit: 6aef347