3 Star 1 Fork 0

NightTC / Gobige

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
Error.go 1.39 KB
一键复制 编辑 原始数据 按行查看 历史
package common
import (
"fmt"
"net"
"os"
"syscall"
)
func NewError(str string) *Error {
return &Error{ErrCode: -1, Str: str}
}
func NewErrorWithCode(code int32, str string) *Error {
return &Error{ErrCode: code, Str: str}
}
type Error struct {
//错误码 0表示成功
ErrCode int32
//错误信息
Str string
//低层错误对象
Err error
//错误信息的参数
Param []interface{}
}
func (e *Error) Unwrap() error { return e.Err }
func (e *Error) Error() string {
if e == nil {
return "<nil>"
}
if e.Err == nil {
if len(e.Param) == 0 {
return e.Str
} else {
return fmt.Sprintf(e.Str, e.Param...)
}
} else {
if len(e.Param) == 0 {
return fmt.Sprintf("%s suberror: %v", e.Str, e.Err)
} else {
return fmt.Sprintf("%s suberror: %v", fmt.Sprintf(e.Str, e.Param...), e.Err)
}
}
}
// 延长错误信息
func (e Error) NewErr(suberr error, param ...interface{}) error {
e.Err = suberr
e.Param = param
return &e
}
// 从错误中读取最后的errno
func GetErrno(err error) int {
if opErr, ok := err.(*net.OpError); ok {
if sysCallErr, oks := opErr.Err.(*os.SyscallError); oks {
if en, oko := sysCallErr.Err.(syscall.Errno); oko {
return int(en)
}
}
}
return 0
}
// 获取信息中的错误
func GetError(v any) error {
if err, ok := v.(error); ok {
return err
} else {
return &Error{ErrCode: -1, Str: "unknown error.", Param: []interface{}{v}}
}
}
Go
1
https://gitee.com/night-tc/gobige.git
git@gitee.com:night-tc/gobige.git
night-tc
gobige
Gobige
00125336c61c

搜索帮助

53164aa7 5694891 3bd8fe86 5694891