@@ -4,40 +4,54 @@ 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"
911 "github.com/samber/lo"
1012)
1113
1214func RecoveryAndCheck (setter * error , callbacks ... func (err error ) error ) {
1315 if setter == nil {
14- errMust (fmt .Errorf ("setter is nil" ))
16+ assert . Must (fmt .Errorf ("errcheck: setter is nil" ))
1517 return
1618 }
1719
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 )
2223 }
2324
25+ gErr := * setter
2426 if err == nil {
2527 err = gErr
2628 }
2729
30+ if err == nil {
31+ return
32+ }
33+
2834 for _ , fn := range callbacks {
2935 err = fn (err )
3036 if err == nil {
3137 return
3238 }
3339 }
3440
35- * setter = errors . WrapCaller ( err , 1 )
41+ * setter = err
3642}
3743
3844func 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+
3953 if errSetter == nil {
40- errMust (fmt .Errorf ("errSetter is nil" ))
54+ assert . Must (fmt .Errorf ("errcheck: errSetter is nil" ))
4155 return false
4256 }
4357
@@ -51,7 +65,7 @@ func Check(errSetter *error, err error, contexts ...context.Context) bool {
5165 }
5266
5367 var ctx = lo .FirstOr (contexts , context .Background ())
54- for _ , fn := range GetCheckersFromCtx (ctx ) {
68+ for _ , fn := range getCheckersFromCtx (ctx ) {
5569 err = fn (ctx , err )
5670 if err == nil {
5771 return false
@@ -62,14 +76,15 @@ func Check(errSetter *error, err error, contexts ...context.Context) bool {
6276 return true
6377}
6478
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+ }
6983
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
7388}
7489
7590func Map (err error , fn func (err error ) error ) error {
@@ -88,12 +103,12 @@ func Inspect(err error, fn func(err error)) {
88103 fn (err )
89104}
90105
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 ) {
92107 if err == nil {
93108 return
94109 }
95110
96- fn ( log . Err ( err , contexts ... ) )
111+ logErr ( lo . FirstOr ( contexts , nil ), err , fn )
97112}
98113
99114func LogErr (err error , contexts ... context.Context ) {
0 commit comments