我正在the Rust guessing game tutorial工作,我被卡住了。该教程指出
let mut guess = String::new();
let guess = "asdf";
let guess: u32 = guess.trim().parse().expect("err");
解析String
,expect
评估Result
并在发生错误时停止。所以输出应该是err
,但我得到:
thread 'main' panicked at 'err: ParseIntError { kind: InvalidDigit }', libcore/result.rs:945:5
我正在使用Rust稳定。
为什么我的期望没有发现错误?
答案 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
如果在None
或Err(_)
上使用,则会发生恐慌。
至于处理错误而不会感到恐慌,您需要阅读本书中Recoverable Errors with Result
的部分。