Rust应用中结构化错误的利弊权衡

2025-06-01

本文探讨了在Rust应用中使用结构化错误(例如使用`thiserror`)而非`anyhow`的利弊。作者在维护一个大型Rust Web服务器的经验中发现,自定义错误类型虽然增加了代码量和维护成本,但带来了诸多好处:清晰地展现函数所有可能的错误模式,使代码更易于理解和审查;接口更具描述性;避免代码中重复的错误信息;强制添加错误上下文;允许添加额外数据和功能。然而,自定义错误类型也存在一些缺点,例如需要额外代码、命名困难、维护开销以及潜在的性能问题。作者建议根据实际情况权衡利弊,在大型应用中,结构化错误的优势可能大于其成本。

开发 thiserror