Error Handling Audit 是一个专注于代码错误处理质量的审计技能,属于 Claude Code 技能,无需注册,也不需要 MCP,可在任意代码仓库中运行。
用途 该技能用于发现代码中“失败被静默隐藏”的地方,即错误被吞掉、未处理或未被正确上报的情况。它可以帮助开发者在合并代码前识别潜在的错误处理缺陷。
主要能力 技能会通过搜索和阅读代码,识别以下反模式:
- 被吞掉或空的异常处理器:例如
except: pass、except Exception: pass、catch (e) {}、catch { },以及catch (e) { /* ignore */ }且没有日志、重新抛出或恢复逻辑。 - 过宽的捕获:例如
except Exception或catch (Throwable)隐藏了本应导致崩溃的 bug;捕获后返回默认值,掩盖失败。 - 异步与 Promise 问题:浮动 Promise(异步调用未 await 且未 .catch());
Promise.all中一个拒绝静默丢弃其余工作;缺少顶层 unhandledRejection 或事件循环错误处理。 - 网络与 IO:fetch 或 HTTP 客户端调用没有超时;对外部不稳定调用没有重试或退避;文件或套接字打开后没有 finally/with/defer 清理。
- 可观测性:错误被捕获并记录,但调用方仍收到成功或 200;
logger.error(e)没有堆栈或上下文,无法分类处理。
使用方式 触发方式包括:
- “Audit error handling in this repo”
- “Where are we swallowing errors?”
- “Check exception handling on my changes”
工作流程:
- 确定范围:整个仓库、某个目录或 git diff(如果有待处理的更改,默认使用 diff)。
- 使用 grep 和阅读代码来查找上述反模式。
- 对每个发现,给出文件与行号、风险(哪种失败会变得不可见)以及修复建议。
输出格式示例:
Error Handling Audit — services/ (diff)
2 swallowed, 1 floating promise, 1 missing timeout
Swallowed errors
services/sync.py:74—except Exception: passaround the DB write. A failed write is now invisible; the job reports success. Log + re-raise.static/js/upload.js:30—catch {}on the upload. User sees nothing on failure.
Async
services/queue.js:51—flushMetrics()is called withoutawaitor.catch. A rejection becomes an unhandledRejection. Await it or attach a handler.
Network
clients/openai.py:22—httpx.post(...)has no timeout. A hung upstream blocks the worker indefinitely. Addtimeout=30+ one retry.
适用场景
- 在代码合并前进行错误处理质量检查。
- 审计整个仓库或特定目录的错误处理。
- 检查代码变更(diff)中引入的错误处理问题。
- 定位静默失败,提升系统可观测性。
限制
- 该技能依赖 Claude Code 环境。
- 需要人工判断修复建议的适用性。
- 暂未提供关于收费、价格、平台支持范围等更多信息。