@@ -4,40 +4,63 @@ import (
44 "context"
55 "fmt"
66
7+ "github.com/pubgo/funk/assert"
78 "github.com/pubgo/funk/errors"
9+ "github.com/pubgo/funk/errors/errinter"
810 "github.com/pubgo/funk/log"
11+ "github.com/rs/zerolog"
912 "github.com/samber/lo"
1013)
1114
1215func RecoveryAndCheck (setter * error , callbacks ... func (err error ) error ) {
1316 if setter == nil {
14- errMust (fmt .Errorf ("setter is nil" ))
17+ assert . Must (fmt .Errorf ("errcheck: setter is nil" ))
1518 return
1619 }
1720
18- err := errors .Parse (recover ())
19- gErr := * setter
20- if err == nil && gErr == nil {
21- return
21+ defer func () {
22+ if * setter == nil {
23+ return
24+ }
25+
26+ logErr (nil , * setter )
27+ }()
28+
29+ err := errinter .ParseError (recover ())
30+ if err != nil {
31+ err = errors .WrapStack (err )
2232 }
2333
34+ gErr := * setter
2435 if err == nil {
2536 err = gErr
2637 }
2738
39+ if err == nil {
40+ return
41+ }
42+
2843 for _ , fn := range callbacks {
2944 err = fn (err )
3045 if err == nil {
3146 return
3247 }
3348 }
3449
35- * setter = errors . WrapCaller ( err , 1 )
50+ * setter = err
3651}
3752
3853func Check (errSetter * error , err error , contexts ... context.Context ) bool {
54+ defer func () {
55+ if * errSetter == nil {
56+ return
57+ }
58+
59+ logErr (lo .FirstOr (contexts , nil ), * errSetter )
60+ }()
61+
3962 if errSetter == nil {
40- errMust (fmt .Errorf ("errSetter is nil" ))
63+ assert . Must (fmt .Errorf ("errcheck: errSetter is nil" ))
4164 return false
4265 }
4366
@@ -51,7 +74,7 @@ func Check(errSetter *error, err error, contexts ...context.Context) bool {
5174 }
5275
5376 var ctx = lo .FirstOr (contexts , context .Background ())
54- for _ , fn := range GetCheckersFromCtx (ctx ) {
77+ for _ , fn := range getCheckersFromCtx (ctx ) {
5578 err = fn (ctx , err )
5679 if err == nil {
5780 return false
@@ -62,16 +85,6 @@ func Check(errSetter *error, err error, contexts ...context.Context) bool {
6285 return true
6386}
6487
65- func Expect (err error , format string , args ... any ) {
66- if err == nil {
67- return
68- }
69-
70- err = errors .WrapCaller (err , 1 )
71- err = errors .Wrapf (err , format , args ... )
72- errMust (err )
73- }
74-
7588func Map (err error , fn func (err error ) error ) error {
7689 if err == nil {
7790 return nil
@@ -80,28 +93,18 @@ func Map(err error, fn func(err error) error) error {
8093 return errors .WrapCaller (fn (err ), 1 )
8194}
8295
83- func Inspect (err error , fn func (err error )) {
84- if err == nil {
85- return
86- }
87-
88- fn (err )
89- }
90-
91- func InspectLog (err error , fn func (logger * log.Event ), contexts ... context.Context ) {
96+ func LogCtx (ctx context.Context , err error , events ... func (e * zerolog.Event )) {
9297 if err == nil {
9398 return
9499 }
95100
96- fn ( log . Err ( err , contexts ... ) )
101+ logErr ( ctx , err , events ... )
97102}
98103
99- func LogErr (err error , contexts ... context. Context ) {
104+ func Log (err error , events ... func ( e * zerolog. Event ) ) {
100105 if err == nil {
101106 return
102107 }
103108
104- log .Err (err , contexts ... ).
105- CallerSkipFrame (1 ).
106- Msg (err .Error ())
109+ logErr (context .Background (), err , events ... )
107110}
0 commit comments