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

Reply via email to