Rust thiserror错误处理库
使用thiserror简化自定义错误类型的实现 · 难度:入门 · +15XP
thiserror简介
thiserror是一个派生宏库,用于简化自定义错误类型的实现。它自动实现Display和Error特型,支持错误链和格式化。
基本用法
use thiserror::Error;
#[derive(Error, Debug)]
pub enum MyError {
#[error("网络错误: {0}")]
Network(String),
#[error("解析错误: {message}")]
Parse { message: String },
#[error("未知错误")]
Unknown,
}
fn do_something() -> Result<(), MyError> {
Err(MyError::Network("连接超时".into()))
}
错误转换
use thiserror::Error;
use std::io;
#[derive(Error, Debug)]
pub enum AppError {
#[error("IO错误: {0}")]
Io(#[from] io::Error),
#[error("自定义错误: {0}")]
Custom(String),
}
fn read_file() -> Result<String, AppError> {
Ok(std::fs::read_to_string("test.txt")?)
}
| 属性 | 作用 |
|---|---|
| #[error(...)] | 定义错误消息格式 |
| #[from] | 自动实现From特型 |
练习提示:创建包含多个错误变体的枚举,并实现错误链。