This is an automated email from the ASF dual-hosted git repository.
yuzhou pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/rocketmq-client-go.git
The following commit(s) were added to refs/heads/master by this push:
new ac4e3d6 fix: withRecover cannot recover panic (#1169)
ac4e3d6 is described below
commit ac4e3d621535e20ea3d6763b4f7fc0f9600261d8
Author: EthanLeo <[email protected]>
AuthorDate: Tue Oct 15 09:51:52 2024 +0800
fix: withRecover cannot recover panic (#1169)
* fix: withRecover cannot recover panic
* fix: withRecover cannot recover panic
---
primitive/base.go | 20 ++++++++++++++------
1 file changed, 14 insertions(+), 6 deletions(-)
diff --git a/primitive/base.go b/primitive/base.go
index a45fbb9..0042785 100644
--- a/primitive/base.go
+++ b/primitive/base.go
@@ -85,14 +85,22 @@ func verifyIP(ip string) error {
return nil
}
-var PanicHandler func(interface{})
+type PanicHandler func(interface{})
-func WithRecover(fn func()) {
+func DefaultPanicHandler(interface{}) {
+ return
+}
+
+func WithRecover(fn func(), handlers ...PanicHandler) {
defer func() {
- handler := PanicHandler
- if handler != nil {
- if err := recover(); err != nil {
- handler(err)
+ if len(handlers) == 0 {
+ handlers = append(handlers, DefaultPanicHandler)
+ }
+ for _, handler := range handlers {
+ if handler != nil {
+ if err := recover(); err != nil {
+ handler(err)
+ }
}
}
}()