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