是否有可能一次处理多个不同的错误,而不是在Rust without using additional functions中单独处理?简而言之:Rust等同于try-catch语句是什么?
像这样的功能(First-class error handling with ?
and catch
)早在2016年就被提出了,但我不知道它产生了什么,以及2019年针对此类问题的解决方案会是什么样子.
例如,做这样的事情:
try {
do_step_1()?;
do_step_2()?;
do_step_3()?;
// etc
} catch {
alert_user("Failed to perform necessary steps");
}
而不是:
match do_steps() {
Ok(_) => (),
_ => alert_user("Failed to perform necessary steps")
}
// Additional function:
fn do_steps() -> Result<(), Error>{
do_step_1()?;
do_step_2()?;
do_step_3()?;
// etc
Ok(())
}
我的程序有一个函数,可以判断注册表中不同位置的不同数据值,并返回一些聚合数据.它需要在循环的其他try-catch内部使用许多try-cache语句.