errors.go 1.4 KB
package xerr

import (
	"fmt"
)

/**
常用通用固定错误
*/

type CodeError struct {
	errCode       uint32
	errMsg        string
	InternalError error
}

// GetErrCode 返回给前端的错误码
func (e *CodeError) GetErrCode() uint32 {
	return e.errCode
}

// GetErrMsg 返回给前端显示端错误信息
func (e *CodeError) GetErrMsg() string {
	if e.errMsg == "" {
		return MapErrMsg(e.errCode)
	}
	return e.errMsg
}

func (e *CodeError) Error() string {
	if e.InternalError != nil {
		return fmt.Sprintf("ErrCode:%d,ErrMsg:%s InternalError:%s", e.errCode, e.errMsg, e.InternalError.Error())
	}
	return fmt.Sprintf("ErrCode:%d,ErrMsg:%s", e.errCode, e.errMsg)
}

/*
	指定错误码的错误
*/

func NewCodeErr(errCode uint32, err error) *CodeError {
	return &CodeError{errCode: errCode, errMsg: MapErrMsg(errCode), InternalError: err}
}

func NewCodeErrMsg(errCode uint32, err error, msg string) *CodeError {
	return &CodeError{errCode: errCode, errMsg: msg, InternalError: err}
}

/*
	默认的服务错误
*/

func NewErr(err error) *CodeError {
	return &CodeError{errCode: SERVER_COMMON_ERROR, InternalError: err}
}

func NewErrMsg(errMsg string) *CodeError {
	return &CodeError{errCode: SERVER_COMMON_ERROR, errMsg: errMsg}
}

func NewErrMsgErr(errMsg string, err error) *CodeError {
	return &CodeError{errCode: SERVER_COMMON_ERROR, errMsg: errMsg, InternalError: err}
}