.parse().expect("err") 发生恐慌而不是处理解析错误

KuS*_*Spa 4 error-handling rust

我正在学习Rust 猜谜游戏教程,但遇到了困难。该教程指出

let mut guess = String::new();
let guess = "asdf";
let guess: u32 = guess.trim().parse().expect("err");
Run Code Online (Sandbox Code Playgroud)

解析 aStringexpect评估 aResult并在出现错误时停止。所以输出应该是err,但我得到:

let mut guess = String::new();
let guess = "asdf";
let guess: u32 = guess.trim().parse().expect("err");
Run Code Online (Sandbox Code Playgroud)

我正在使用 Rust 稳定版。

为什么我的期望没有捕获错误?

DK.*_*DK. 7

做了。如果将expect消息更改为"oh no i am asploded",则输出如下:

thread 'main' panicked at 'oh no i am asploded: ParseIntError { kind: InvalidDigit }', libcore/result.rs:945:5
note: Run with `RUST_BACKTRACE=1` for a backtrace.
Run Code Online (Sandbox Code Playgroud)

expect只是unwrap带有自定义消息,unwrap如果在 aNone或上使用,则会出现恐慌Err(_)

至于如何处理错误而不惊慌,您需要阅读书中有关可恢复错误的部分。Result