【发布时间】:2019-09-09 08:28:43
【问题描述】:
是否可以一次处理多个不同的错误,而不是在 Rust 中单独处理而不使用额外的函数?简而言之: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 语句和 try-catch。
【问题讨论】:
标签: error-handling rust try-catch