errno

package
v1.3.2 Latest Latest
Warning

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

Go to latest
Published: Feb 23, 2021 License: MIT Imports: 3 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	// InternalServerError 系统错误,非 Errno 实现均被 Parse 解析为系统错误
	InternalServerError = &errno{code: -1, message: "System Error"}

	// OK error 为nil 时会被 Parse 解析为 OK
	OK = &errno{code: 0, message: "ok"}
)

Functions

func Parse

func Parse(err error) (int, string, error)

Parse 返回错误码、错误消息以及包装错误 Parse 首先使用 To(err) 获得一个 Errno 实现 包装错误使用 errors.Unwrap 解析获得

Types

type Errno

type Errno interface {
	error

	// Code 返回错误编码
	Code() int

	// Message 返回错误消息文本
	Message() string
}

Errno 包含错误码和错误消息的接口,适用于应用程序错误

func New

func New(code int, message string) Errno

New 给定错误码及错误格式化文本,返回一个 Errno 每 New 一次返回一个新的 Errno, 即使 code 和 message 相同

func NewCode

func NewCode(code int) Errno

NewCode 给定错误码,返回一个 Errno 每 New 一次返回一个新的 Errno, 即使 code 相同

func To

func To(err error) Errno

To 把任意 error 转成 Errno 类型 如果 err 实现了 Errno 接口,则返回 err 本身 如果 err 为 nil, 返回预定义 OK, 默认 code=0, message=ok 如果 err 没有实现 Errno,返回预定义 InternalServerError,并使用 WrapErrno 包装 err,默认 code=-1, message=System Error

type WrapErrno

type WrapErrno interface {
	Errno

	// WrapErr 包装一个 error,返回新的 WrapErrno
	// 使用 fmt %w 标识实现多次包装
	WrapErr(err error) WrapErrno

	// WrapComment 包装一个评论,返回新的 WrapErrno
	// 这会覆盖旧 WrapErrno 中的评论信息,但不会修改旧 WrapErrno
	WrapComment(comment string) WrapErrno

	// WrapFormat 包装错误消息文本格式化参数,返回新的 WrapErrno
	// 在定义 Errno 错误消息文本时,可以使用 fmt 格式化标识,通过 WrapFormat 可以包装 fmt 格式化参数
	// 这会覆盖旧 WrapErrno 中的格式化参数,但不会修改旧 WrapErrno
	WrapFormat(a ...interface{}) WrapErrno

	// Err 使用 fmt %w 标识来包装现有错误,返回调用者自身
	// 这不会产生一个新的 WrapErrno, 但会修改包装的 error 数据,并使旧的 error 数据不丢失
	Err(err error) WrapErrno

	// Comment 设置评论信息,返回调用者自身
	// 这不会产生一个新的 WrapErrno,但是会覆盖评论信息
	Comment(comment string) WrapErrno

	// Format 设置错误消息文本格式化参数,返回调用者自身
	// 这不会产生一个新的 WrapErrno,但是会覆盖错误消息文本格式化参数
	Format(a ...interface{}) WrapErrno

	// Unwrap 返回 WrapErrno 中包装的错误对象,他并不一定是最后一个被包装错误对象,这取决具体实现
	// 这并不是 errors 中的 Unwrap 接口实现,而且用来获取 WrapErrno 中绑定的错误
	// 如果需要判断是否包含某个错误请使用 errors.Is
	// 如果判断是否包含的某种类型的错误,请使用 errors.As
	Unwrap() error
}

WrapErrno 对 Errno 进行扩展 支持错误信息、描述信息、错误消息格式化

func Wrap

func Wrap(e Errno) WrapErrno

Wrap 转换 Errno 为 WrapErrno,返回一个新的 WrapErrno 即使 Errno 为 WrapErrno 也会得到一个新的 WrapErrno

func WrapComment

func WrapComment(e Errno, comment string) WrapErrno

WrapComment 包装一个评论,返回新的 WrapErrno 这会覆盖旧 WrapErrno 中的评论信息,但不会修改旧 WrapErrno

func WrapErr

func WrapErr(e Errno, err error) WrapErrno

WrapErr 包装一个 error,返回一个新的 WrapErrno 使用 fmt %w 标识实现多次包装

func WrapFormat

func WrapFormat(e Errno, a ...interface{}) WrapErrno

WrapFormat 包装错误消息文本格式化参数,返回新的 WrapErrno 在定义 Errno 错误消息文本时,可以使用 fmt 格式化标识,通过 WrapFormat 可以包装 fmt 格式化参数 这会覆盖旧 WrapErrno 中的格式化参数,但不会修改旧 WrapErrno

Jump to

Keyboard shortcuts

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