errors

package
v0.0.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 3, 2025 License: Apache-2.0 Imports: 7 Imported by: 0

Documentation

Overview

Package errors 提供错误处理。

核心功能:

  • 错误码定义(HTTP/gRPC)
  • 错误构造器
  • 错误响应转换

使用示例:

err := errors.New(errors.CodeNotFound, "user not found")
err = errors.Wrap(err, errors.CodeInternal, "failed to get user")
httpCode := err.HTTPStatus()

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func As

func As(err error, target any) bool

As 将错误转换为目标类型

func GRPCCode

func GRPCCode(err error) codes.Code

GRPCCode 返回错误的 gRPC 状态码

func GetHTTPStatus

func GetHTTPStatus(err error) int

GetHTTPStatus 从错误中提取 HTTP 状态码

func GetMessage

func GetMessage(err error) string

GetMessage 从错误中提取消息

func Is

func Is(err, target error) bool

Is 检查错误链中是否包含目标错误

func IsCode

func IsCode(err error, code Code) bool

IsCode 检查错误是否为指定错误码

func Join

func Join(errs ...error) error

Join 合并多个错误

func RegisterCode

func RegisterCode(code Code, httpStatus int, grpcCode codes.Code, message string)

RegisterCode 注册自定义错误码

func ToGRPCStatus

func ToGRPCStatus(err error) *status.Status

ToGRPCStatus 转换为 gRPC Status

Types

type Code

type Code int

Code 错误码

const (
	// 成功
	OK Code = 0

	// 通用错误 1-999
	Unknown            Code = 1
	Canceled           Code = 2
	InvalidArgument    Code = 3
	NotFound           Code = 4
	AlreadyExists      Code = 5
	PermissionDenied   Code = 6
	Unauthenticated    Code = 7
	ResourceExhausted  Code = 8
	FailedPrecondition Code = 9
	Aborted            Code = 10
	OutOfRange         Code = 11
	Unimplemented      Code = 12
	Internal           Code = 13
	Unavailable        Code = 14
	DataLoss           Code = 15
	Timeout            Code = 16

	// 认证/授权 1000-1999
	TokenExpired   Code = 1001
	TokenInvalid   Code = 1002
	TokenMissing   Code = 1003
	AccessDenied   Code = 1004
	SessionExpired Code = 1005

	// 参数校验 2000-2999
	ValidationFailed Code = 2001
	MissingParameter Code = 2002
	InvalidFormat    Code = 2003
	OutOfBounds      Code = 2004

	// 业务错误 3000-3999
	UserNotFound        Code = 3001
	UserExists          Code = 3002
	OrderNotFound       Code = 3003
	InsufficientBalance Code = 3004

	// 外部服务 4000-4999
	DatabaseError   Code = 4001
	CacheError      Code = 4002
	MQError         Code = 4003
	ThirdPartyError Code = 4004
	NetworkError    Code = 4005

	// 系统错误 5000-5999
	SystemError Code = 5001
	ConfigError Code = 5002
	InitError   Code = 5003
)

错误码定义 (按模块划分区间) 0: 成功 1-999: 通用错误 1000-1999: 认证/授权 2000-2999: 参数校验 3000-3999: 业务错误 4000-4999: 外部服务 5000-5999: 系统错误

func GetCode

func GetCode(err error) Code

GetCode 从错误中提取错误码

func (Code) GRPCCode

func (c Code) GRPCCode() codes.Code

GRPCCode 返回 gRPC 状态码

func (Code) HTTPStatus

func (c Code) HTTPStatus() int

HTTPStatus 返回 HTTP 状态码

func (Code) Message

func (c Code) Message() string

Message 返回默认消息

func (Code) String

func (c Code) String() string

String 返回错误码字符串

type Error

type Error struct {
	// contains filtered or unexported fields
}

Error 应用错误

func BadRequest

func BadRequest(message string) *Error

BadRequest 400 错误

func Conflict

func Conflict(message string) *Error

Conflict 409 错误

func ErrAlreadyExists

func ErrAlreadyExists(message string) *Error

ErrAlreadyExists 已存在

func ErrCache

func ErrCache(err error) *Error

ErrCache 缓存错误

func ErrDatabase

func ErrDatabase(err error) *Error

ErrDatabase 数据库错误

func ErrInternal

func ErrInternal(message string) *Error

ErrInternal 内部错误

func ErrInvalidArgument

func ErrInvalidArgument(message string) *Error

ErrInvalidArgument 无效参数

func ErrMQ

func ErrMQ(err error) *Error

ErrMQ 消息队列错误

func ErrMissingParam

func ErrMissingParam(param string) *Error

ErrMissingParam 缺少参数

func ErrNotFound

func ErrNotFound(message string) *Error

ErrNotFound 未找到

func ErrPermissionDenied

func ErrPermissionDenied(message string) *Error

ErrPermissionDenied 权限拒绝

func ErrThirdParty

func ErrThirdParty(err error, service string) *Error

ErrThirdParty 第三方服务错误

func ErrTimeout

func ErrTimeout(message string) *Error

ErrTimeout 超时

func ErrUnauthenticated

func ErrUnauthenticated(message string) *Error

ErrUnauthenticated 未认证

func ErrUnavailable

func ErrUnavailable(message string) *Error

ErrUnavailable 服务不可用

func ErrValidation

func ErrValidation(message string) *Error

ErrValidation 校验错误

func Forbidden

func Forbidden(message string) *Error

Forbidden 403 错误

func FromCode

func FromCode(code Code) *Error

FromCode 从错误码创建错误

func FromGRPCError

func FromGRPCError(err error) *Error

FromGRPCError 从 gRPC 错误创建错误

func FromGRPCStatus

func FromGRPCStatus(s *status.Status) *Error

FromGRPCStatus 从 gRPC Status 创建错误

func InternalErr

func InternalErr(err error) *Error

InternalErr 500 错误

func New

func New(code Code, message string) *Error

New 创建错误

func Newf

func Newf(code Code, format string, args ...any) *Error

Newf 创建格式化错误

func NotFoundErr

func NotFoundErr(message string) *Error

NotFoundErr 404 错误

func ServiceUnavailable

func ServiceUnavailable(message string) *Error

ServiceUnavailable 503 错误

func Unauthorized

func Unauthorized(message string) *Error

Unauthorized 401 错误

func Wrap

func Wrap(err error, code Code, message string) *Error

Wrap 包装错误

func Wrapf

func Wrapf(err error, code Code, format string, args ...any) *Error

Wrapf 包装错误(格式化)

func (*Error) Code

func (e *Error) Code() Code

Code 返回错误码

func (*Error) Error

func (e *Error) Error() string

Error 实现 error 接口

func (*Error) GetMeta

func (e *Error) GetMeta(key string) any

GetMeta 获取元数据

func (*Error) HTTPStatus

func (e *Error) HTTPStatus() int

HTTPStatus 返回 HTTP 状态码

func (*Error) Is

func (e *Error) Is(target error) bool

Is 判断错误是否匹配

func (*Error) LogFields

func (e *Error) LogFields() map[string]any

LogFields 返回结构化日志字段

func (*Error) MarshalJSON

func (e *Error) MarshalJSON() ([]byte, error)

MarshalJSON 序列化错误为 JSON

func (*Error) Message

func (e *Error) Message() string

Message 返回错误消息

func (*Error) Metadata

func (e *Error) Metadata() map[string]any

Metadata 返回元数据

func (*Error) StackTrace

func (e *Error) StackTrace() []string

StackTrace 返回堆栈信息

func (*Error) Unwrap

func (e *Error) Unwrap() error

Unwrap 返回底层错误

func (*Error) WithMeta

func (e *Error) WithMeta(key string, value any) *Error

WithMeta 添加元数据

func (*Error) WithMetadata

func (e *Error) WithMetadata(meta map[string]any) *Error

WithMetadata 批量添加元数据

type Response

type Response struct {
	Code    int            `json:"code"`
	Message string         `json:"message"`
	Details map[string]any `json:"details,omitempty"`
}

Response API 错误响应

func ToResponse

func ToResponse(err error) Response

ToResponse 转换为 API 响应

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL