@@ -4,40 +4,63 @@ import (
4
4
"context"
5
5
"fmt"
6
6
7
+ "github.com/pubgo/funk/assert"
7
8
"github.com/pubgo/funk/errors"
9
+ "github.com/pubgo/funk/errors/errinter"
8
10
"github.com/pubgo/funk/log"
11
+ "github.com/rs/zerolog"
9
12
"github.com/samber/lo"
10
13
)
11
14
12
15
func RecoveryAndCheck (setter * error , callbacks ... func (err error ) error ) {
13
16
if setter == nil {
14
- errMust (fmt .Errorf ("setter is nil" ))
17
+ assert . Must (fmt .Errorf ("errcheck: setter is nil" ))
15
18
return
16
19
}
17
20
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 )
22
32
}
23
33
34
+ gErr := * setter
24
35
if err == nil {
25
36
err = gErr
26
37
}
27
38
39
+ if err == nil {
40
+ return
41
+ }
42
+
28
43
for _ , fn := range callbacks {
29
44
err = fn (err )
30
45
if err == nil {
31
46
return
32
47
}
33
48
}
34
49
35
- * setter = errors . WrapCaller ( err , 1 )
50
+ * setter = err
36
51
}
37
52
38
53
func 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
+
39
62
if errSetter == nil {
40
- errMust (fmt .Errorf ("errSetter is nil" ))
63
+ assert . Must (fmt .Errorf ("errcheck: errSetter is nil" ))
41
64
return false
42
65
}
43
66
@@ -51,7 +74,7 @@ func Check(errSetter *error, err error, contexts ...context.Context) bool {
51
74
}
52
75
53
76
var ctx = lo .FirstOr (contexts , context .Background ())
54
- for _ , fn := range GetCheckersFromCtx (ctx ) {
77
+ for _ , fn := range getCheckersFromCtx (ctx ) {
55
78
err = fn (ctx , err )
56
79
if err == nil {
57
80
return false
@@ -62,16 +85,6 @@ func Check(errSetter *error, err error, contexts ...context.Context) bool {
62
85
return true
63
86
}
64
87
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
-
75
88
func Map (err error , fn func (err error ) error ) error {
76
89
if err == nil {
77
90
return nil
@@ -80,28 +93,18 @@ func Map(err error, fn func(err error) error) error {
80
93
return errors .WrapCaller (fn (err ), 1 )
81
94
}
82
95
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 )) {
92
97
if err == nil {
93
98
return
94
99
}
95
100
96
- fn ( log . Err ( err , contexts ... ) )
101
+ logErr ( ctx , err , events ... )
97
102
}
98
103
99
- func LogErr (err error , contexts ... context. Context ) {
104
+ func Log (err error , events ... func ( e * zerolog. Event ) ) {
100
105
if err == nil {
101
106
return
102
107
}
103
108
104
- log .Err (err , contexts ... ).
105
- CallerSkipFrame (1 ).
106
- Msg (err .Error ())
109
+ logErr (context .Background (), err , events ... )
107
110
}
0 commit comments