Rust:专业级错误处理工具 thiserror 详解

Rust:专业级错误处理工具 thiserror 详解

thiserror 是 Rust 中用于高效定义自定义错误类型的库,特别适合库开发。相比 anyhow 的应用级错误处理,thiserror 提供更精确的错误控制,让库用户能模式匹配具体错误。


📦 基本安装

Cargo.toml 中添加:

[dependencies]
thiserror = "1.0"

🧩 核心功能

1. 基础错误定义

use thiserror::Error;

#[derive(Error, Debug)]
enum MyError {
   
   
    #[error("File not found: {0}")]
    NotFound(String),
    
    #[error("I/O error occurred")]
    Io(#[from] std::io::Error),
    
    #[error("Validation failed for {field}: {reason}")]
    Validation {
   
   
        field: &'static str,
        reason: String,
    },
}

2. 自动实现特征

自动为你的类型实现:

  • std::error::Error
  • Display(通过 #[error] 属性)
  • From(通过 #[from] 属性)

🛠️ 属性详解

1. #[error("格式化字符串")]

定义错误的显示信息:

#[error("Invalid value: {value} (allowed: {allowed_values:?})")]
InvalidValue {
   
   
    value: i32,
    allowed_values: Vec<i32>,
}

调用:

println!("{}", MyError::InvalidValue {
   
   
    value: 42,
    allowed_values: vec![1, 2, 3]
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

许野平

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值