@coder-rust-error-handling
<skill_overview> 在 Rust 中设计可预测且符合人体工程学的错误处理 设计错误类型 用结果传播错误 在 API 边界处映射错误 在恐慌和结果之间进行选择 The Rust Book - 错误处理 </skill_overview> <panic_vs_result> <use_panic_when> 不可恢复的、打破不变的失败 程序中的错误(逻辑错误) </use_panic_when> <use_result_when> 预期错误(未找到,验证) I/O 或外部依赖项失败 </use_result_when> </panic_vs_result> <error_types> 为模块或服务定义专用错误枚举 为自定义错误实现 Display 和 Error 使用 From 转换较低级别的错误 enum ServiceError { NotFound, InvalidInput, Io(std::io::Error) } </error_types> 使用 ?传播错误 使用map_err或自定义变体添加上下文 保留原始错误以进行调试 <boundary_mapping> 将内部错误映射到公共错误代码/消息 不要向客户端泄漏敏感详细信息 </boundary_mapping> <anti_patterns> 避免展开/期望正常流程 避免没有结构的纯字符串错误 不要对验证失败感到恐慌 </anti_patterns>
<skill_overview> 在 Rust 中设计可预测且符合人体工程学的错误处理 设计错误类型 用结果传播错误 在 API 边界处映射错误 在恐慌和结果之间进行选择 The Rust Book - 错误处理 </skill_overview> <panic_vs_result> <use_panic_when> 不可恢复的、打破不变的失败 程序中的错误(逻辑错误) </use_panic_when> <use_result_when> 预期错误(未找到,验证) I/O 或外部依赖项失败 </use_result_when> </panic_vs_result> <error_types> 为模块或服务定义专用错误枚举 为自定义错误实现 Display 和 Error 使用 From 转换较低级别的错误 enum ServiceError { NotFound, InvalidInput, Io(std::io::Error) } </error_types> 使用 ?传播错误 使用map_err或自定义变体添加上下文 保留原始错误以进行调试 <boundary_mapping> 将内部错误映射到公共错误代码/消息 不要向客户端泄漏敏感详细信息 </boundary_mapping> <anti_patterns> 避免展开/期望正常流程 避免没有结构的纯字符串错误 不要对验证失败感到恐慌 </anti_patterns>