// Package errors 提供错误处理框架 package errors import ( "fmt" ) // Error 表示构建过程中的错误 type Error interface { error // Code 返回错误代码 Code() string // Component 返回发生错误的组件 Component() string // Details 返回详细错误信息 Details() map[string]interface{} } // BuildError 实现了Error接口 type BuildError struct { code string component string message string details map[string]interface{} cause error } // NewBuildError 创建一个新的BuildError func NewBuildError(code, component, message string, cause error, details map[string]interface{}) *BuildError { if details == nil { details = make(map[string]interface{}) } return &BuildError{ code: code, component: component, message: message, details: details, cause: cause, } } // Error 实现error接口 func (e *BuildError) Error() string { if e.cause != nil { return fmt.Sprintf("[%s] %s: %s (caused by: %v)", e.code, e.component, e.message, e.cause) } return fmt.Sprintf("[%s] %s: %s", e.code, e.component, e.message) } // Code 返回错误代码 func (e *BuildError) Code() string { return e.code } // Component 返回发生错误的组件 func (e *BuildError) Component() string { return e.component } // Details 返回详细错误信息 func (e *BuildError) Details() map[string]interface{} { return e.details } // Unwrap 返回底层错误 func (e *BuildError) Unwrap() error { return e.cause }