package main import ( "encoding/json" "fmt" // "github.com/infraboard/mcube/v2/exception" ) func main() { err := ValidateToken("") if err != nil { fmt.Println(err) bj, _ := json.Marshal(err) fmt.Println(string(bj)) // {"service":"","http_code":500,"code":10001,"reason":"","message":"token is empty","meta":{},"data":{}} if exception.IsApiException(err, 10001) { fmt.Println("IsApiException: token is empty") } } } func ValidateToken(token string) error { if token == "" { return exception.NewApiException(10001, "token is empty") } return nil } // func NewApiException(code int, message string) *ApiException { // return &ApiException{ // HttpCode: 500, // Code: code, // Message: message, // Meta: map[string]any{}, // Data: map[string]any{}, // } // } // // ApiException API异常结构体 // // 自定义异常数据结构体, 方便后续的异常处理和日志记录 // type ApiException struct { // Service string `json:"service"` // 服务名称, 你后端服务多个 // HttpCode int `json:"http_code,omitempty"` // HTTP状态码, 需不需定义明确的http code, 默认500,非2xx // Code int `json:"code"` // 业务异常码, 具体业务自己定义 // Reason string `json:"reason"` // 异常原因 // Message string `json:"message"` // 详细描述 // Meta map[string]any `json:"meta"` // 元数据 // Data any `json:"data"` // 附加数据 // } // func (e *ApiException) Error() string { // return e.Message // } // // 辅助函数: IsApiException 判断是否是ApiException // func IsApiException(err error, code int) bool { // if v, ok := err.(*ApiException); ok { // return v.Code == code // } // return false // }