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