# 任务03:错误处理框架 ## 任务描述 实现Installer Builder项目的错误处理框架,提供统一的错误类型定义、错误包装和错误上下文信息。该框架将使错误处理更加一致,并提供丰富的错误信息,便于调试和问题排查。 ## 实现步骤 1. 定义错误接口: - 在`internal/common/errors`包中创建`error.go`文件 - 定义Error接口,扩展标准error接口: ```go type Error interface { error // Code 返回错误代码 Code() string // Component 返回发生错误的组件 Component() string // Details 返回详细错误信息 Details() map[string]interface{} // Unwrap 返回原始错误(符合Go 1.13+错误链) Unwrap() error } ``` 2. 实现基础错误类型: - 创建BuildError结构体,实现Error接口: ```go type BuildError struct { code string component string message string details map[string]interface{} cause error } ``` - 实现必要的方法和构造函数 3. 定义错误代码常量: - 创建错误代码常量,分类管理: ```go const ( // 配置错误 ErrConfigParse = "CONFIG_PARSE_ERROR" ErrConfigValidation = "CONFIG_VALIDATION_ERROR" // 构建错误 ErrBuildFailed = "BUILD_FAILED" ErrBuildEnvironment = "BUILD_ENVIRONMENT_ERROR" // 平台错误 ErrPlatformNotSupported = "PLATFORM_NOT_SUPPORTED" // ... 其他错误代码 ) ``` 4. 实现错误创建函数: - 创建NewError函数,用于创建新的错误实例 - 创建Wrap函数,用于包装现有错误并添加上下文 - 创建WithDetails函数,用于添加详细信息 5. 实现错误处理工具函数: - 创建Is函数,用于错误类型检查 - 创建As函数,用于错误类型转换 - 创建GetErrorChain函数,用于获取完整错误链 6. 实现错误格式化: - 自定义错误的字符串表示 - 支持详细和简洁两种格式 - 包含错误代码、组件、消息和详情 7. 实现错误上下文传递: - 支持在错误中添加上下文信息 - 支持从错误中提取上下文信息 ## 单元测试要求 1. 测试错误接口实现: - 验证所有方法按预期工作 - 测试错误链功能 2. 测试错误创建和包装: - 验证错误创建函数 - 测试错误包装和上下文添加 3. 测试错误处理工具函数: - 验证Is和As函数的正确性 - 测试GetErrorChain函数 4. 测试错误格式化: - 验证错误的字符串表示 - 测试详细和简洁格式 5. 测试与标准库兼容性: - 验证与fmt.Errorf和%w的兼容性 - 测试与errors.Is和errors.As的兼容性 ## 依赖关系 - 依赖任务01(项目初始化) - 依赖任务02(日志系统实现) - 被大多数后续任务依赖 ## 完成标准 1. Error接口已定义并文档完善 2. BuildError实现了所有接口方法 3. 错误代码常量已定义 4. 错误创建和包装函数已实现 5. 错误处理工具函数已实现 6. 错误格式化已实现 7. 所有单元测试通过 8. 代码符合项目的Go语言开发规范 9. 与Go标准库错误处理机制兼容