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

时间:2018-03-31 11:33:07

标签: error-handling rust

我正在the Rust guessing game tutorial工作,我被卡住了。该教程指出

let mut guess = String::new();
let guess = "asdf";
let guess: u32 = guess.trim().parse().expect("err");

解析Stringexpect评估Result并在发生错误时停止。所以输出应该是err,但我得到:

thread 'main' panicked at 'err: ParseIntError { kind: InvalidDigit }', libcore/result.rs:945:5

我正在使用Rust稳定。

为什么我的期望没有发现错误?

1 个答案:

答案 0 :(得分:2)

做了。如果您将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.

expect仅包含unwrap个自定义消息,unwrap如果在NoneErr(_)上使用,则会发生恐慌。

至于处理错误而不会感到恐慌,您需要阅读本书中Recoverable Errors with Result的部分。