anyhow
是一个 Rust 库,用于简化错误处理。它提供了一个 Result
类型,可以更方便地处理错误。以下是如何使用 anyhow
处理错误的示例:首先,在 Cargo.toml
文件中添加 anyhow
依赖:
[dependencies] anyhow = "1"
然后,在代码中使用 anyhow
:
use anyhow::{Context, Result}; fn main() -> Result<()> { // 模拟一个可能出错的操作 let result = divide(4, 0)?; println!("Result: {}", result); Ok(()) } fn divide(a: u32, b: u32) -> Result<u32, anyhow::Error> { if b == 0 { // 使用 Context 来添加额外的上下文信息 Err(anyhow::anyhow!("division by zero")) } else { Ok(a / b) } }
在这个例子中,我们定义了一个 divide
函数,它接受两个参数并返回一个 Result<u32, anyhow::Error>
。如果除数为零,我们使用 Err
宏创建一个包含额外上下文信息的错误。在 main
函数中,我们使用 ?
运算符将错误传播到上层调用者。如果发生错误,?
会立即返回错误,否则它会继续执行。
注意,anyhow::Error
实现了 std::error::Error
和 std::fmt::Display
trait,因此你可以使用标准的错误处理工具(如 println!
或 Result::unwrap_or_else
)来处理错误。