用途:在 JavaScript/TypeScript 或 Node.js 中实现错误处理、重试逻辑与恢复模式时应用。
主要能力:区分编程错误(TypeError、ReferenceError、断言失败等,应修复代码而非捕获后继续)与运行错误(网络超时、文件不存在、无效输入等,应优雅处理、恢复、上报、通知用户或记录日志)。提供同步 try/catch 与异步 await try/catch 写法,按错误码分支处理(如 ECONNREFUSED 走 fallback,否则重新抛出)。
结构化错误:用 DomainError 承载带错误码的业务错误,供 API 层使用;领域层抛普通 Error,API 层按需转换为 DomainError,客户端获得结构化错误。跨层传播路径为:领域层抛 Error → API 捕获 → 返回 DomainError(code) → 客户端收到结构化错误。不向客户端暴露内部错误细节,映射为已知错误码或通用错误。
约定:只从运行错误中恢复;业务校验用 DomainError,编程缺陷直接抛出;不静默吞掉错误,始终记录或传播;实现优雅关闭(停止接受连接、排空现有连接、释放资源);对瞬时故障(网络、数据库连接)使用带指数退避的重试;在进程级同时处理 uncaughtException 与 unhandledRejection。
重试模式:retry 函数接受 fn 与 attempts、delay 选项,失败时按 delay*(i+1) 递增等待后重试,最后一次失败则抛出。
进程级处理:uncaughtException 记录日志并 process.exit(1)(状态可能已损坏);unhandledRejection 记录日志并视为待修复缺陷。
优雅关闭:用 Map 跟踪连接,server.close 后释放资源并退出;遍历连接结束响应并销毁;监听 SIGINT 与 SIGTERM 触发 shutdown。
限制:资料未提供具体安装命令、依赖包、版本要求、性能数据或收费信息。