我正在努力通过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稳定器。
为什么我的期望没有捕获到该错误?
最佳答案
它做了。如果将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(_)
panic ,它就可以了。至于不 panic 地处理错误,您需要阅读本书中有关Recoverable Errors with
Result
的部分。关于error-handling - .parse()。expect (“err”) panic 而不是处理解析错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49587267/