跳到主要内容

panic

错误处理

错误处理是处理失败可能性的过程。例如,无法读取文件然后继续使用错误的输入显然会出现问题。注意到并明确管理这些错误可以使程序的其余部分免受各种陷阱的影响。

Rust 中有多种处理错误的方法,在以下子章节中进行了描述。它们或多或少都有细微的差别和不同的用例。根据经验:

显式 panic 主要用于测试和处理不可恢复的错误。对于原型设计来说,它可能很有用,例如在处理尚未实现的功能时,但在这些情况下,更具描述性的 unimplemented 更好。在测试中 panic 是显式失败的合理方式。

Option 类型适用于值是可选的或缺少值不是错误情况的情况。例如,目录的父目录 - / 和 C: 没有。处理 Option 时, unwrap 适合原型设计和绝对确定有值的情况。但是 expect 更有用,因为它可以让您指定错误消息,以防出现问题。

当事情有可能出错并且调用者必须处理问题时,请使用 Result 。您也可以 unwrap 和 expect 它们(请不要这样做,除非它是测试或快速原型)。

有关错误处理的更严格的讨论,请参阅官方书籍中的错误处理部分。

我们将看到的最简单的错误处理机制是 panic 。它打印一条错误消息,开始展开堆栈,然后通常退出程序。在这里,我们在错误条件下显式调用 panic :

fn drink(beverage: &str) {
// You shouldn't drink too much sugary beverages.
if beverage == "lemonade" { panic!("AAAaaaaa!!!!"); }

println!("Some refreshing {} is all I need.", beverage);
}

fn main() {
drink("water");
drink("lemonade");
drink("still water");
}

第一次调用 drink 有效。第二个发生恐慌,因此第三个永远不会被调用。

Loading Comments...