package fserr import ( "errors" "fmt" "testing" ) var testErr = newError(ErrUnknownCode, "测试错误") func TestErrors(t *testing.T) { fmt.Printf("测试错误打印: %+v\n", testErr) err := Func1() fmt.Printf("测试Func3错误打印: %+v\n", err) err = testErr.WithStack() fmt.Printf("测试WithStack错误打印: %+v\n", err) isRight := errors.Is(err, testErr) if !isRight { t.Fatal("Is错误") } targetErr := &Error{} asRight := errors.As(err, &targetErr) if !asRight { t.Fatal("As错误") } fmt.Printf("测试目标错误打印: %+v\n", targetErr) if !errors.Is(err, targetErr) { t.Fatal("目标错误和原始错误不一致") } if err != targetErr { t.Fatal("目标错误和原始错误不一致") } } func Func1() error { return Func2() } func Func2() error { return Func3() } func Func3() error { return testErr.WithStack() }