像这样的功能(使用
?
和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-catch。
failure
并不是唯一帮助处理错误的 crate。有许多其他的 crate,每个都有不同的重点。 - Shepmasteranyhow
。 - rsalmei