diff --git a/g/errors/gerror/gerror.go b/g/errors/gerror/gerror.go index 99f52fad2..b667dab04 100644 --- a/g/errors/gerror/gerror.go +++ b/g/errors/gerror/gerror.go @@ -9,9 +9,18 @@ package gerror import ( "fmt" + "github.com/gogf/gf/g/util/gconv" ) +type ApiStack interface { + Stack() string +} + +type ApiCause interface { + Cause() error +} + // New returns an error that formats as the given value. func New(value interface{}) error { if value == nil { @@ -61,7 +70,7 @@ func Wrapf(err error, format string, args ...interface{}) error { // Cause returns the root cause error. func Cause(err error) error { if err != nil { - if e, ok := err.(*Error); ok { + if e, ok := err.(ApiCause); ok { return e.Cause() } } @@ -74,7 +83,7 @@ func Stack(err error) string { if err == nil { return "" } - if e, ok := err.(*Error); !ok { + if e, ok := err.(ApiStack); ok { return e.Stack() } return "" diff --git a/g/util/gvalid/gvalid_unit_checkstruct_test.go b/g/util/gvalid/gvalid_unit_checkstruct_test.go index a02fc555b..6c4b68754 100755 --- a/g/util/gvalid/gvalid_unit_checkstruct_test.go +++ b/g/util/gvalid/gvalid_unit_checkstruct_test.go @@ -237,7 +237,7 @@ func Test_CheckStruct_With_Inherit(t *testing.T) { Pass Pass } user := &User{ - Name: "john", + Name: "", Pass: Pass{ Pass1: "1", Pass2: "2", diff --git a/geg/errors/gerror/gerror2.go b/geg/errors/gerror/gerror2.go index a210d5fef..abb512302 100644 --- a/geg/errors/gerror/gerror2.go +++ b/geg/errors/gerror/gerror2.go @@ -1,7 +1,7 @@ package main import ( - "github.com/gogf/gf/g/os/glog" + "fmt" "github.com/gogf/gf/g/errors/gerror" ) @@ -19,8 +19,8 @@ func ReadConfig() error { } func main() { - err := ReadConfig() - glog.Printf("%s\n%+s", err, err) - glog.Printf("%+v", err) - glog.Error(err) + //err := ReadConfig() + //glog.Printf("%s\n%+s", err, err) + //glog.Printf("%+v", err) + fmt.Printf("%+v", ReadConfig()) } diff --git a/geg/errors/gerror/gerror3.go b/geg/errors/gerror/gerror3.go new file mode 100644 index 000000000..d587ec016 --- /dev/null +++ b/geg/errors/gerror/gerror3.go @@ -0,0 +1,23 @@ +package main + +import ( + "errors" + "fmt" + + "github.com/gogf/gf/g/errors/gerror" +) + +func Error1() error { + return errors.New("test") +} + +func Error2() error { + return gerror.New("test") +} + +func main() { + err1 := Error1() + err2 := Error2() + fmt.Println("err1:\n", gerror.Stack(err1)) + fmt.Println("err2:\n", gerror.Stack(err2)) +}