anyhow
是一个 Rust 库,用于简化错误处理。它允许您以一致的方式处理不同类型的错误。要在 Rust 中使用 anyhow
传递错误,请遵循以下步骤:
Cargo.toml
文件中添加 anyhow
作为依赖项:[dependencies]
anyhow = "1"
anyhow
库:use anyhow::{Context, Result};
使用 Result
类型来表示可能出错的操作。如果操作成功,返回 Ok
变量;如果操作失败,返回 Err
变量,其中包含有关错误的详细信息。
使用 ?
运算符将错误从函数中传播到调用者。如果 Err
变量包含错误信息,?
运算符将自动将其转换为 anyhow::Error
类型,并将其传递给调用者。
下面是一个简单的示例,说明如何使用 anyhow
传递错误:
use anyhow::{Context, Result};
fn divide(a: u32, b: u32) -> Result<u32> {
if b == 0 {
return Err("division by zero".context());
}
Ok(a / b)
}
fn main() -> Result<()> {
let result = divide(10, 0)?;
println!("Result: {}", result);
Ok(())
}
在这个示例中,我们定义了一个名为 divide
的函数,该函数接受两个 u32
参数并返回一个 Result<u32>
类型。如果除数为零,我们返回一个包含错误信息的 Err
变量。在 main
函数中,我们调用 divide
函数并使用 ?
运算符将错误传播到调用者。如果发生错误,程序将打印错误信息并提前退出。