package app import "fmt" // AppError 应用程序错误类型 type AppError struct { Code int Message string Cause error } func (e *AppError) Error() string { if e.Cause != nil { return fmt.Sprintf("[%d] %s: %v", e.Code, e.Message, e.Cause) } return fmt.Sprintf("[%d] %s", e.Code, e.Message) } // 预定义错误类型 var ( ErrInitFailed = &AppError{Code: 1, Message: "初始化失败"} ErrParseFailed = &AppError{Code: 2, Message: "参数解析失败"} ErrOutputFailed = &AppError{Code: 3, Message: "输出初始化失败"} ErrScanFailed = &AppError{Code: 4, Message: "扫描执行失败"} ) // NewAppError 创建新的应用程序错误 func NewAppError(code int, message string, cause error) *AppError { return &AppError{ Code: code, Message: message, Cause: cause, } } // WrapError 包装错误为应用程序错误 func WrapError(baseErr *AppError, cause error) *AppError { return &AppError{ Code: baseErr.Code, Message: baseErr.Message, Cause: cause, } }