Rust 错误处理与朴素新闻通讯发送实现
1. 错误处理工具选择
在 Rust 中,关于错误处理有一个常见误解,认为 anyhow 用于应用程序, thiserror 用于库。但实际上,选择错误处理工具应基于意图。
- 使用错误枚举 :若期望调用者根据不同失败模式采取不同行为,可使用错误枚举,让调用者匹配不同变体。可借助 thiserror 减少样板代码。
- 使用不透明错误 :若调用者在失败时只想放弃,主要关注向操作员或用户报告错误,可使用不透明错误,不向调用者提供错误内部细节的编程访问。若觉得 anyhow 或 eyre 的 API 方便,可使用它们。
多数 Rust 库返回错误枚举而非 Box<dyn std::error::Error> ,因为库作者不能或不想对用户意图做假设,枚举让用户有更多控制权,但接口更复杂,用户需筛选多个变体来确定特殊处理。设计合适的错误类型时,要仔细考虑用例和可做的假设,有时 Box<dyn std::error::Error> 或 anyhow::Error 对库也是合适的选择。
2. 错误日志记录
请求失败时会产生多个错误级别的日志记录,如 insert_subscriber 代码中、 actix_web
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



