一个过度设计的陷阱
我看到很多 Agent 的代码:捕获所有异常,试图恢复一切,写了 50 行错误处理代码。
问题:为了一个可能永远不会发生的错误,写了这么多代码。
核心原则:让错误崩溃
听起来很反直觉?但这是对的。
过度错误处理:捕获所有异常,试图恢复一切,代码复杂难维护,真正的错误被隐藏。
让错误崩溃:只处理可恢复的错误,让不可恢复的错误崩溃,问题立即暴露,修复根本原因。
哪些错误应该处理?
应该处理: 临时性错误(网络超时可以重试),外部依赖故障(API 限流可以等待)。
不应该处理: 编程错误(让崩溃立即发现并修复),逻辑错误(数据问题应该暴露),配置错误(启动时发现问题)。
我的错误处理策略
策略 1:快速失败 - 有问题立即暴露,不要隐藏。启动时验证配置,不要等运行时才发现。
策略 2:错误分类 - 不是所有错误都一样。区分可恢复和不可恢复。
策略 3:错误日志 + 告警 - 不需要自动恢复,但需要知道。有些错误需要人工处理。
策略 4:重试有限次 - 不要无限重试。重试失败就崩溃。
一个真实案例
过度错误处理的版本:100 行代码,50 行是错误处理,真正的问题被隐藏。
简化版本:代码清晰,问题立即暴露,崩溃堆栈自动记录,强迫修复根本原因。
最后的话
错误处理不是越多越好。
过度错误处理隐藏真正的问题,增加复杂度,难以维护。
适当的错误处理立即暴露问题,简单直接,易于维护。
好的 Agent = 快速崩溃 + 快速修复。
—— https://www.80aj.com