Skip to content

Commit ac4e3d6

Browse files
authored
fix: withRecover cannot recover panic (#1169)
* fix: withRecover cannot recover panic * fix: withRecover cannot recover panic
1 parent 9462ea8 commit ac4e3d6

File tree

1 file changed

+14
-6
lines changed

1 file changed

+14
-6
lines changed

primitive/base.go

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -85,14 +85,22 @@ func verifyIP(ip string) error {
8585
return nil
8686
}
8787

88-
var PanicHandler func(interface{})
88+
type PanicHandler func(interface{})
8989

90-
func WithRecover(fn func()) {
90+
func DefaultPanicHandler(interface{}) {
91+
return
92+
}
93+
94+
func WithRecover(fn func(), handlers ...PanicHandler) {
9195
defer func() {
92-
handler := PanicHandler
93-
if handler != nil {
94-
if err := recover(); err != nil {
95-
handler(err)
96+
if len(handlers) == 0 {
97+
handlers = append(handlers, DefaultPanicHandler)
98+
}
99+
for _, handler := range handlers {
100+
if handler != nil {
101+
if err := recover(); err != nil {
102+
handler(err)
103+
}
96104
}
97105
}
98106
}()

0 commit comments

Comments
 (0)