SuperAPI AI 工具集

rust-error-advanced

编程与开发

查看项目

更新于 10-16 09:52

技能介绍

本技能面向 Rust 错误处理进阶,核心是区分 Result、Option 与 panic 的使用时机:预期会失败的操作(文件读取、网络请求)用 Result;缺失属于正常情况(查找、可能为空的值)用 Option;bug 或不变式违例、不可恢复错误用 panic!,理论不可达分支用 unreachable!()。

决策路径:失败是预期的且为库代码,用 thiserror 定义类型化错误;为应用代码,用 anyhow 便于传播;缺失正常则用 Option;bug 或不变式违例则用 panic!、assert!。

主要能力:用 thiserror 的 #[derive(Error, Debug)] 定义带 #[error(...)] 消息的枚举错误,配合 #[from] 保留底层错误源,并用 ? 传播;用 anyhow 的 Result、Context、with_context、bail! 添加上下文、提前返回,并组合多个错误源。错误链可用 map_err 转换错误,或用 with_context 添加调用层信息。

常见反模式:处处 unwrap()(库中会导致 panic)、Box<dyn Error> 丢失类型信息、丢失上下文导致调试困难、错误变体过多造成过度设计。最佳实践:库代码用精确错误类型,应用代码优先易用性,用 ? 代替 unwrap(),用 .context() 或 with_context() 添加上下文,用 #[from] 保留错误源,并区分 panic 场景。

适用场景:库与应用代码的错误类型设计、错误传播与上下文补充、panic 使用边界判断。限制:资料未提供该技能的安装命令、平台、收费或使用步骤等具体信息。