Show HN: Stack Error – ergonomic error handling for Rust
a year ago
- #Error Handling
- #Rust
- #Debugging
- Stack Error 降低了设计错误处理解决方案的前期成本。
- Stack Error 的目标:提供类似 anyhow 的人机工程学设计、信息丰富的错误消息,以及用于运行时处理的类型化数据。
- 错误消息与错误源位于同一位置,有助于代码文档化。
- 使用宏(如 `stack_map!` 和 `stack_err!`)的示例用法,简化错误处理。
- 错误消息包含文件名和行号,便于调试。
- 通过可选错误代码处理运行时错误,包括 HTTP 和 IO 错误代码。
- 允许使用 `std::convert::From` 等方法定义自定义错误类型。
- 通过实现 `std::error::Error` 与 Rust 生态系统兼容。
- 与 `anyhow` 和 `thiserror` 的对比,将 Stack Error 定位为折中方案。
- 特性包括 `ErrorStacks` trait、`ErrorCode` 枚举和用于常见操作的宏。
- 如何使用 `derive_stack_error` 宏创建自定义错误类型。
- 构建错误的示例:包含文件和行信息、错误代码,以及通过链式错误添加上下文。