用途:为 TypeScript 和 Python 应用设计让失败显式、可恢复、可调试的错误处理策略。核心原则是把错误处理风格与错误语义相匹配,而非对所有错误一视同仁。
适用场景:为某领域在异常、Result 类型或错误码之间做选择;设计 TypeScript/Python 类型化错误层级;实现带退避、抖动与熔断的重试逻辑;构建 React 错误边界与优雅降级;为用户和开发者组织错误信息;处理 Python 异常链与 cause/context 语义。不适用于:调试具体运行时错误、日志管道基础设施、APM/监控配置、错误路径测试编写。
主要能力:
- 决策规则:库代码优先 Result 类型,避免强制调用方处理异常;应用代码可用类型化异常层级;CLI/脚本用错误码;异步 worker 用 Result 或带重试元数据的结构化错误对象。
- 错误分类两轴:瞬时/永久、用户可操作/系统可操作,据此决定是否重试、向用户展示什么、是否告警。
- 重试决策:仅瞬时错误可重试;检查最大重试次数与熔断器状态;等待指数退避加 full jitter;超限进入死信队列,熔断器超时后发探测请求恢复。
- TypeScript 错误层级示例:AppError 基类含 code、statusCode、isOperational,派生 ValidationError、NotFoundError、RateLimitError。
- Result 类型:type Result<T,E> = {ok:true;value:T} | {ok:false;error:E},配 ok/err 辅助函数,调用方被迫处理两种情况。
- React 错误边界:用 getDerivedStateFromError 与 componentDidCatch,仅在路由层级和昂贵隔离子树放置,不包裹每个组件;不捕获异步错误。
- Python 异常链:重抛时用 raise X from Y 保留因果链。
- 结构化错误日志:记录 code、message、stack、上下文与 requestId/traceId,向用户返回脱敏信息与 errorId。
- 反模式:Pokemon 式全捕获会隐藏编程错误与资源泄漏;字符串类型化错误迫使调用方解析字符串、重构易碎、无 IDE 支持。
限制:参考资料中的代码示例与流程图仅作模式说明;具体收费、平台支持、安装命令等未提供。