Ergonomic errors in Rust: write fast, debug with ease, handle precisely
9 months ago
- #stackerror
- #Error Handling
- #Rust
- Rust中的错误出现在三种场景中:编写代码、调试和运行时处理。
- stackerror旨在简化所有场景下的错误处理,提供调试上下文和结构化的错误代码。
- 现有的Rust错误处理工具(如裸Result<T, &'static str>、anyhow和thiserror)在上下文丰富性、传播便捷性和运行时处理方面存在权衡。
- stackerror结合了anyhow的便捷性和thiserror的精确性,使用错误代码进行运行时匹配,并通过堆叠上下文辅助调试。
- 使用stackerror进行错误处理时,只需极少的样板代码,即可实现丰富的上下文堆叠和结构化错误代码控制流程。
- 本文通过一个涉及IO操作、HTTP处理和重试机制的实例演示stackerror的核心特性。
- stackerror支持创建具有自定义错误码的库专用错误类型,在保持API稳定的同时灵活调整错误信息。
- 通过分离运行时处理的错误码和调试用的人类可读信息,确保精确控制流程而不暴露内部细节。