package errors import ( "errors" "fmt" ) // 错误类型定义 var ( ErrNotFound = errors.New("resource not found") ErrInvalidInput = errors.New("invalid input") ErrInternalServer = errors.New("internal server error") ErrUnauthorized = errors.New("unauthorized") ErrForbidden = errors.New("forbidden") ErrConflict = errors.New("conflict") ErrBadRequest = errors.New("bad request") ErrTimeout = errors.New("timeout") ErrServiceUnavailable = errors.New("service unavailable") ) // AppError 应用错误结构 type AppError struct { Err error Message string Code int } func (e *AppError) Error() string { if e.Message != "" { return e.Message } return e.Err.Error() } func (e *AppError) Unwrap() error { return e.Err } // NewAppError 创建新的应用错误 func NewAppError(err error, message string, code int) *AppError { return &AppError{ Err: err, Message: message, Code: code, } } // WrapError 包装错误 func WrapError(err error, message string) error { return fmt.Errorf("%s: %w", message, err) } // IsNotFound 检查是否为资源未找到错误 func IsNotFound(err error) bool { return errors.Is(err, ErrNotFound) } // IsInvalidInput 检查是否为无效输入错误 func IsInvalidInput(err error) bool { return errors.Is(err, ErrInvalidInput) } // IsInternalServer 检查是否为内部服务器错误 func IsInternalServer(err error) bool { return errors.Is(err, ErrInternalServer) } // IsUnauthorized 检查是否为未授权错误 func IsUnauthorized(err error) bool { return errors.Is(err, ErrUnauthorized) } // IsForbidden 检查是否为禁止访问错误 func IsForbidden(err error) bool { return errors.Is(err, ErrForbidden) } // IsConflict 检查是否为冲突错误 func IsConflict(err error) bool { return errors.Is(err, ErrConflict) } // IsBadRequest 检查是否为请求错误 func IsBadRequest(err error) bool { return errors.Is(err, ErrBadRequest) } // IsTimeout 检查是否为超时错误 func IsTimeout(err error) bool { return errors.Is(err, ErrTimeout) } // IsServiceUnavailable 检查是否为服务不可用错误 func IsServiceUnavailable(err error) bool { return errors.Is(err, ErrServiceUnavailable) }