feat: super 包支持注册第三方错误,将第三方错误转换为特定错误代码和信息

This commit is contained in:
kercylan 2023-07-21 23:20:22 +08:00
parent 6238883dc9
commit 2cbffbf967
1 changed files with 18 additions and 3 deletions

View File

@ -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
}