anyhow
是一个 Rust 库,用于简化错误处理。它可以捕获和处理各种错误,包括标准库错误、自定义错误等。要使用 anyhow
捕获错误,你需要在代码中使用 Result
类型,并在可能出错的地方使用 ?
操作符。如果发生错误,?
操作符会立即将错误传播给上层调用者,同时返回一个 Err
变体。
下面是一个简单的示例,展示了如何使用 anyhow
捕获和处理错误:
use anyhow::Result; fn main() -> Result<()> { let file_content = read_file("non_existent_file.txt")?; println!("File content: {}", file_content); let result = divide(10, 0)?; println!("Result: {}", result); Ok(()) } fn read_file(file_name: &str) -> Result{ std::fs::read_to_string(file_name).map_err(|err| anyhow::format_err!("Failed to read file {}: {}", file_name, err)) } fn divide(a: u32, b: u32) -> Result { if b == 0 { Err(anyhow::format_err!("Division by zero")) } else { Ok(a / b) } }
在这个示例中,我们使用 ?
操作符捕获了 read_file
和 divide
函数中可能发生的错误。如果发生错误,?
操作符会立即将错误传播给 main
函数,并返回一个 Err
变体。这样,我们可以轻松地处理错误并向用户提供有关错误的详细信息。