"errors"
)
+type Action string
+
type Error struct {
son error
Reason string
- action string
+ action Action
}
func (t Error) Error() string {
return t
}
-func Catch(e error, action string) bool {
+func Catch(e error, action Action) bool {
if v, ok := e.(Error); ok {
if v.action == action {
return true
return fe
}
-func New(reason string, action ...string) (e Error) {
+func New(reason string, action ...Action) (e Error) {
e = Error{
Reason: reason,
}
}
ErrActionSimplifyFunc ErrFormat = func(e error) string {
if err, ok := e.(Error); ok {
- return err.action + ":" + e.Error() + "\n"
+ return string(err.action) + ":" + e.Error() + "\n"
} else {
return e.Error() + "\n"
}
}
ErrActionInLineFunc ErrFormat = func(e error) string {
if err, ok := e.(Error); ok {
- return "> " + err.action + ":" + e.Error() + " "
+ return "> " + string(err.action) + ":" + e.Error() + " "
} else {
return "> " + e.Error() + " "
}
"testing"
)
+var a0 = Action("a0")
+var a1 = Action("a1")
+
func TestXxx(t *testing.T) {
var err error
- err = New("r0", "a0")
+ err = New("r0", a0)
- if !Catch(err, "a0") {
+ if !Catch(err, a0) {
t.Fail()
}
t.Fail()
}
- err = Grow(New("r1", "a1"), err)
+ err = Grow(New("r1", a1), err)
- if !Catch(err, "a1") {
+ if !Catch(err, a1) {
t.Fail()
}
- if !Catch(err, "a0") {
+ if !Catch(err, a0) {
t.Fail()
}
}
func TestXxx2(t *testing.T) {
- err := Grow(New("r1", "a1"), io.EOF)
- if !Catch(err, "a1") {
+ err := Grow(New("r1", a1), io.EOF)
+ if !Catch(err, a1) {
t.Fatal()
}
t.Log(err.Error())
}
func Test2(t *testing.T) {
- e := Join(New("r0", "a0"), New("r1", "a1"))
+ e := Join(New("r0", a0), New("r1", a1))
t.Log(ErrorFormat(e))
t.Log(ErrorFormat(e, ErrSimplifyFunc))
t.Log(ErrorFormat(e, ErrInLineFunc))