)
type Error struct {
- son interface{}
+ son error
Reason string
action string
}
return false
}
-// Grow will overwrite reason but save action for catch
-func Grow(e error, son Error) Error {
+// Grow will append error action for catch
+func Grow(fe Error, e error) Error {
if v, ok := e.(Error); ok {
- son.son = v
+ fe.son = v
} else {
- son.son = Error{
- Reason: v.Error(),
+ fe.son = Error{
+ Reason: e.Error(),
}
}
- return son
+ return fe
}
func New(action string, reason ...string) (e Error) {
return []error{errors.Unwrap(e)}
}
-func ErrorFormat(e error, format ...func(error) string) (s string) {
+func ErrorFormat(e error, format ...ErrFormat) (s string) {
if e == nil {
return ""
}
return
}
+type ErrFormat func(e error) string
+
var (
ErrSimplifyFunc = func(e error) string {
return e.Error() + "\n"
t.Fail()
}
- err = Grow(err, New("r1", "a1"))
+ err = Grow(New("r1", "a1"), err)
if !Catch(err, "r0") {
t.Fail()
t.Fail()
}
}
+func TestXxx2(t *testing.T) {
+ err := Grow(New("r1", "a1"), io.EOF)
+ if !Catch(err, "r1") {
+ t.Fatal()
+ }
+ t.Log(err.Error())
+}
func Test2(t *testing.T) {
e := Join(New("r0", "a0"), New("r1", "a1"))