Ai
4 Star 17 Fork 8

NightTC/Gobige

Create your Gitee Account
Explore and code with more than 13.5 million developers,Free private repositories !:)
Sign up
文件
Clone or Download
Error.go 2.06 KB
Copy Edit Raw Blame History
package common
import (
"fmt"
"net"
"os"
"syscall"
)
// Error 表示一个错误对象,包含错误码、错误信息和子错误。
type Error struct {
//错误码 0表示成功
ErrCode int32
//错误信息
Str string
//低层错误对象
Err error
//错误信息的参数
Param []interface{}
}
// NewError 创建一个新的 Error 对象。
func NewError(code int32, str string) *Error {
return &Error{ErrCode: code, Str: str}
}
func (this *Error) Is(target error) bool {
mtarget, ok := target.(*Error)
if !ok {
return false
}
return this.ErrCode == mtarget.ErrCode && this.Str == mtarget.Str
}
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) String() string {
return e.Error()
}
// 延长错误信息
func (e Error) NewErr(suberr error, param ...interface{}) error {
e.Err = suberr
e.Param = param
return &e
}
// AppendMsg 用于通用错误 追加服务器更多信息,客户端不会展示的.
func (e Error) AppendMsg(fmat string, param ...interface{}) error {
e.Str += "[服务器只读内容]:" + fmt.Sprintf(fmat, 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)
}
}
}
if errno, ok := err.(*Error); ok {
return int(errno.ErrCode)
}
return 0
}
// 获取对象的错误
func GetError(v any) error {
if v, ok := v.(error); ok {
return v
} else {
return &Error{ErrCode: -1, Str: "unknown error"}
}
}
var (
// 通用成功的回复
Err_Success = NewError(0, "success")
// 通用的未知错误
Err_Unknown = NewError(-1, "unknown error")
)
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/night-tc/gobige.git
git@gitee.com:night-tc/gobige.git
night-tc
gobige
Gobige
3e11984fb1ba

Search