Skip to content

Commit abae4a0

Browse files
authored
make default panic handler could be customized (#1182)
* make default panic handler could be customized * feat: add primitive.DefaultPanicHandler
1 parent dd3dbcc commit abae4a0

File tree

3 files changed

+33
-4
lines changed

3 files changed

+33
-4
lines changed

consumer/push_consumer.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1111,6 +1111,9 @@ func (pc *pushConsumer) consumeMessageConcurrently(pq *processQueue, mq *primiti
11111111
go primitive.WithRecover(func() {
11121112
defer func() {
11131113
if err := recover(); err != nil {
1114+
if primitive.DefaultPanicHandler != nil {
1115+
primitive.DefaultPanicHandler(err)
1116+
}
11141117
rlog.Error("consumeMessageConcurrently panic", map[string]interface{}{
11151118
rlog.LogKeyUnderlayError: err,
11161119
rlog.LogKeyStack: utils.GetStackAsString(false),

primitive/base.go

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -87,14 +87,19 @@ func verifyIP(ip string) error {
8787

8888
type PanicHandler func(interface{})
8989

90-
func DefaultPanicHandler(interface{}) {
91-
return
92-
}
90+
// primitive.DefaultPanicHandler = func(i interface{}) {
91+
// sentry.CaptureMessage(fmt.Sprintf("%+v", i), nil)
92+
// }
93+
var DefaultPanicHandler PanicHandler
9394

9495
func WithRecover(fn func(), handlers ...PanicHandler) {
9596
defer func() {
9697
if len(handlers) == 0 {
97-
handlers = append(handlers, DefaultPanicHandler)
98+
if DefaultPanicHandler != nil {
99+
handlers = append(handlers, DefaultPanicHandler)
100+
} else {
101+
handlers = append(handlers, func(interface{}) {})
102+
}
98103
}
99104
for _, handler := range handlers {
100105
if handler != nil {

primitive/base_test.go

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ limitations under the License.
1818
package primitive
1919

2020
import (
21+
"fmt"
2122
"testing"
2223

2324
"github.com/stretchr/testify/assert"
@@ -74,3 +75,23 @@ func TestBase(t *testing.T) {
7475
b = []string{"a", "c"}
7576
assert.True(t, Diff(a, b))
7677
}
78+
79+
func TestWithRecover(t *testing.T) {
80+
ass := assert.New(t)
81+
82+
DefaultPanicHandler = nil
83+
ass.NotPanics(func() {
84+
WithRecover(func() {
85+
panic("test")
86+
})
87+
})
88+
89+
DefaultPanicHandler = func(i interface{}) {
90+
fmt.Println("panic test")
91+
}
92+
ass.NotPanics(func() {
93+
WithRecover(func() {
94+
panic("test")
95+
})
96+
})
97+
}

0 commit comments

Comments
 (0)