@@ -4,40 +4,54 @@ 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"
9
11
"github.com/samber/lo"
10
12
)
11
13
12
14
func RecoveryAndCheck (setter * error , callbacks ... func (err error ) error ) {
13
15
if setter == nil {
14
- errMust (fmt .Errorf ("setter is nil" ))
16
+ assert . Must (fmt .Errorf ("errcheck: setter is nil" ))
15
17
return
16
18
}
17
19
18
- err := errors .Parse (recover ())
19
- gErr := * setter
20
- if err == nil && gErr == nil {
21
- return
20
+ err := errinter .ParseError (recover ())
21
+ if err != nil {
22
+ err = errors .WrapStack (err )
22
23
}
23
24
25
+ gErr := * setter
24
26
if err == nil {
25
27
err = gErr
26
28
}
27
29
30
+ if err == nil {
31
+ return
32
+ }
33
+
28
34
for _ , fn := range callbacks {
29
35
err = fn (err )
30
36
if err == nil {
31
37
return
32
38
}
33
39
}
34
40
35
- * setter = errors . WrapCaller ( err , 1 )
41
+ * setter = err
36
42
}
37
43
38
44
func Check (errSetter * error , err error , contexts ... context.Context ) bool {
45
+ defer func () {
46
+ if * errSetter == nil {
47
+ return
48
+ }
49
+
50
+ logErr (lo .FirstOr (contexts , nil ), * errSetter )
51
+ }()
52
+
39
53
if errSetter == nil {
40
- errMust (fmt .Errorf ("errSetter is nil" ))
54
+ assert . Must (fmt .Errorf ("errcheck: errSetter is nil" ))
41
55
return false
42
56
}
43
57
@@ -51,7 +65,7 @@ func Check(errSetter *error, err error, contexts ...context.Context) bool {
51
65
}
52
66
53
67
var ctx = lo .FirstOr (contexts , context .Background ())
54
- for _ , fn := range GetCheckersFromCtx (ctx ) {
68
+ for _ , fn := range getCheckersFromCtx (ctx ) {
55
69
err = fn (ctx , err )
56
70
if err == nil {
57
71
return false
@@ -62,14 +76,15 @@ func Check(errSetter *error, err error, contexts ...context.Context) bool {
62
76
return true
63
77
}
64
78
65
- func Expect (err error , format string , args ... any ) {
66
- if err == nil {
67
- return
68
- }
79
+ func Must (err error , args ... any ) {
80
+ logErr ( nil , err )
81
+ errNilOrPanic ( err , args ... )
82
+ }
69
83
70
- err = errors .WrapCaller (err , 1 )
71
- err = errors .Wrapf (err , format , args ... )
72
- errMust (err )
84
+ func Must1 [T any ](v T , err error ) T {
85
+ logErr (nil , err )
86
+ errNilOrPanic (err )
87
+ return v
73
88
}
74
89
75
90
func Map (err error , fn func (err error ) error ) error {
@@ -88,12 +103,12 @@ func Inspect(err error, fn func(err error)) {
88
103
fn (err )
89
104
}
90
105
91
- func InspectLog (err error , fn func (logger * log.Event ), contexts ... context.Context ) {
106
+ func InspectLog (err error , fn func (evt * log.Event ), contexts ... context.Context ) {
92
107
if err == nil {
93
108
return
94
109
}
95
110
96
- fn ( log . Err ( err , contexts ... ) )
111
+ logErr ( lo . FirstOr ( contexts , nil ), err , fn )
97
112
}
98
113
99
114
func LogErr (err error , contexts ... context.Context ) {
0 commit comments