From 2cbffbf967aef46b58596ea89924c09ce54470d9 Mon Sep 17 00:00:00 2001 From: kercylan <61743331+kercylan98@users.noreply.github.com> Date: Fri, 21 Jul 2023 23:20:22 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20super=20=E5=8C=85=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E6=B3=A8=E5=86=8C=E7=AC=AC=E4=B8=89=E6=96=B9=E9=94=99=E8=AF=AF?= =?UTF-8?q?=EF=BC=8C=E5=B0=86=E7=AC=AC=E4=B8=89=E6=96=B9=E9=94=99=E8=AF=AF?= =?UTF-8?q?=E8=BD=AC=E6=8D=A2=E4=B8=BA=E7=89=B9=E5=AE=9A=E9=94=99=E8=AF=AF?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=E5=92=8C=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- utils/super/error.go | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) 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 }