91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

rust anyhow如何處理錯誤

小樊
81
2024-11-20 07:04:10
欄目: 編程語言

anyhow 是一個 Rust 庫,用于簡化錯誤處理。它提供了一個 Result 類型,可以表示成功或失敗的結果。當你在代碼中使用 anyhow 時,你可以使用 ? 運算符來傳播錯誤。如果 ResultErr,則會立即返回錯誤;如果是 Ok,則會解包值并繼續執行。

下面是一個簡單的示例,展示了如何使用 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<String> {
    std::fs::read_to_string(file_name).map_err(|err| {
        anyhow::anyhow!("Failed to read file {}: {}", file_name, err)
    })
}

fn divide(a: i32, b: i32) -> Result<i32> {
    if b == 0 {
        Err(anyhow::anyhow!("Division by zero"))
    } else {
        Ok(a / b)
    }
}

在這個示例中,我們定義了三個函數:mainread_filedividemain 函數調用 read_filedivide 函數,并使用 ? 運算符處理錯誤。如果發生錯誤,anyhow 會生成一個描述性的錯誤消息,并立即返回。

read_file 函數嘗試讀取一個文件的內容。如果文件不存在或無法讀取,它會使用 map_err 將標準錯誤轉換為 anyhow::Error 類型,并添加一個描述性消息。

divide 函數執行除法操作。如果除數為零,它會返回一個錯誤,否則返回結果。

0
即墨市| 朝阳市| 东乡县| 遂平县| 南安市| 舒城县| 大安市| 大城县| 荥经县| 普洱| 永泰县| 安平县| 那坡县| 鄂托克旗| 石屏县| 白山市| 沁阳市| 古丈县| 曲靖市| 西吉县| 运城市| 新巴尔虎右旗| 利津县| 和平县| 贵港市| 冕宁县| 清新县| 驻马店市| 太和县| 徐汇区| 阿巴嘎旗| 海晏县| 文山县| 九江县| 晋州市| 酉阳| 扬州市| 刚察县| 安丘市| 玛纳斯县| 莒南县|