diff --git a/utils/super/error.go b/utils/super/error.go index e89d276..226b84c 100644 --- a/utils/super/error.go +++ b/utils/super/error.go @@ -5,6 +5,7 @@ import ( ) var errorMapper = make(map[error]int) +var errorMapperRef = make(map[error]error) // RegError 通过错误码注册错误,返回错误的引用 func RegError(code int, message string) error { @@ -16,7 +17,21 @@ func RegError(code int, message string) error { return err } -// GetErrorCode 通过错误引用获取错误码,如果错误不存在则返回 0 -func GetErrorCode(err error) int { - return errorMapper[err] +// RegErrorRef 通过错误码注册错误,返回错误的引用 +func RegErrorRef(code int, message string, ref error) error { + if code == 0 { + panic("error code can not be 0") + } + err := errors.New(message) + errorMapper[err] = code + errorMapperRef[ref] = err + return ref +} + +// GetErrorCode 通过错误引用获取错误码,如果错误不存在则返回 0 +func GetErrorCode(err error) (int, error) { + if ref, exist := errorMapperRef[err]; exist { + err = ref + } + return errorMapper[err], err }