From 7efe88a0f4a8918541087d95a5d94a49a974727f Mon Sep 17 00:00:00 2001 From: kercylan98 Date: Mon, 25 Dec 2023 14:39:26 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20super=20=E5=8C=85=E6=96=B0=E5=A2=9E=20R?= =?UTF-8?q?ecoverTransform=20=E5=87=BD=E6=95=B0=EF=BC=8C=E7=94=A8=E4=BA=8E?= =?UTF-8?q?=E5=B0=86=20recover()=20=E7=BB=93=E6=9E=9C=E8=BD=AC=E5=8C=96?= =?UTF-8?q?=E4=B8=BA=20error?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- utils/super/error.go | 14 ++++++++++++++ utils/super/error_example_test.go | 17 +++++++++++++++++ 2 files changed, 31 insertions(+) create mode 100644 utils/super/error_example_test.go diff --git a/utils/super/error.go b/utils/super/error.go index 06b173f..ddb55cc 100644 --- a/utils/super/error.go +++ b/utils/super/error.go @@ -2,6 +2,7 @@ package super import ( "errors" + "fmt" "sync" ) @@ -77,3 +78,16 @@ func (slf *errorManager) init() *errorManager { slf.errorMapperRef = make(map[error]error) return slf } + +// RecoverTransform recover 错误转换 +func RecoverTransform(a any) error { + if a == nil { + return nil + } + switch a.(type) { + case error: + return a.(error) + default: + return fmt.Errorf("%v", a) + } +} diff --git a/utils/super/error_example_test.go b/utils/super/error_example_test.go new file mode 100644 index 0000000..6fc2c47 --- /dev/null +++ b/utils/super/error_example_test.go @@ -0,0 +1,17 @@ +package super_test + +import ( + "fmt" + "github.com/kercylan98/minotaur/utils/super" +) + +func ExampleRecoverTransform() { + defer func() { + if err := super.RecoverTransform(recover()); err != nil { + fmt.Println(err) + } + }() + panic("test") + // Output: + // test +}