我正在努力通过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,如果在unwrapNone上使用了Err(_) panic ,它就可以了。

至于不 panic 地处理错误,您需要阅读本书中有关Recoverable Errors with Result 的部分。

关于error-handling - .parse()。expect (“err”) panic 而不是处理解析错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49587267/

10-16 20:36