Date: Fri, 29 Mar 2024 18:55:17 +0800 (CST) Message-ID: <754122603.1178.1711709717525@localhost.localdomain> Subject: Exported From Confluence MIME-Version: 1.0 Content-Type: multipart/related; boundary="----=_Part_1177_1457375677.1711709717524" ------=_Part_1177_1457375677.1711709717524 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Content-Location: file:///C:/exported.html
=E6=A0=87=E5=87=86=E5=BA=93=E7=9A=84error
=E9=94=99=E8=AF=AF=
=E5=AE=9E=E7=8E=B0=E6=AF=94=E8=BE=83=E7=AE=80=E5=8D=95=EF=BC=8C=E6=97=A0=E6=
=B3=95=E8=BF=9B=E8=A1=8C=E5=A0=86=E6=A0=88=E8=BF=BD=E6=BA=AF=EF=BC=8C=E5=AF=
=B9=E4=BA=8E=E4=BA=A7=E7=94=9F=E9=94=99=E8=AF=AF=E6=97=B6=E7=9A=84=E4=B8=8A=
=E5=B1=82=E8=B0=83=E7=94=A8=E8=80=85=E6=9D=A5=E8=AE=B2=E4=B8=8D=E6=98=AF=E5=
=BE=88=E5=8F=8B=E5=A5=BD=EF=BC=8C=E6=97=A0=E6=B3=95=E8=8E=B7=E5=BE=97=E9=94=
=99=E8=AF=AF=E7=9A=84=E8=B0=83=E7=94=A8=E9=93=BE=E8=AF=A6=E7=BB=86=E4=BF=A1=
=E6=81=AF=E3=80=82gerror
=E6=94=AF=E6=8C=81=E9=94=99=E8=AF=AF=
=E5=A0=86=E6=A0=88=E8=AE=B0=E5=BD=95=EF=BC=8C=E9=80=9A=E8=BF=87New/Ne=
wf
=E3=80=81Wrap/Wrapf
=E7=AD=89=E6=96=B9=E6=B3=95=E5=9D=
=87=E4=BC=9A=E8=87=AA=E5=8A=A8=E8=AE=B0=E5=BD=95=E5=BD=93=E5=89=8D=E9=94=99=
=E8=AF=AF=E4=BA=A7=E7=94=9F=E6=97=B6=E7=9A=84=E5=A0=86=E6=A0=88=E4=BF=A1=E6=
=81=AF=E3=80=82
=E7=A4=BA=E4=BE=8B=EF=BC=9A
package main import ( =09"fmt" =09"github.com/gogf/gf/v2/errors/gerror" ) func OpenFile() error { =09return gerror.New("permission denied") } func OpenConfig() error { =09return gerror.Wrap(OpenFile(), "configuration file opening failed") } func ReadConfig() error { =09return gerror.Wrap(OpenConfig(), "reading configuration failed") } func main() { =09fmt.Printf("%+v", ReadConfig()) } // Output: // reading configuration failed: configuration file opening failed: permiss= ion denied // 1. reading configuration failed // 1). main.ReadConfig // /Users/john/Workspace/Go/GOPATH/src/github.com/gogf/gf/v2/geg/er= rors/gerror/gerror2.go:18 // 2). main.main // /Users/john/Workspace/Go/GOPATH/src/github.com/gogf/gf/v2/geg/er= rors/gerror/gerror2.go:25 // 2. configuration file opening failed // 1). main.OpenConfig // /Users/john/Workspace/Go/GOPATH/src/github.com/gogf/gf/v2/geg/er= rors/gerror/gerror2.go:14 // 2). main.ReadConfig // /Users/john/Workspace/Go/GOPATH/src/github.com/gogf/gf/v2/geg/er= rors/gerror/gerror2.go:18 // 3). main.main // /Users/john/Workspace/Go/GOPATH/src/github.com/gogf/gf/v2/geg/er= rors/gerror/gerror2.go:25 // 3. permission denied // 1). main.OpenFile // /Users/john/Workspace/Go/GOPATH/src/github.com/gogf/gf/v2/geg/er= rors/gerror/gerror2.go:10 // 2). main.OpenConfig // /Users/john/Workspace/Go/GOPATH/src/github.com/gogf/gf/v2/geg/er= rors/gerror/gerror2.go:14 // 3). main.ReadConfig // /Users/john/Workspace/Go/GOPATH/src/github.com/gogf/gf/v2/geg/er= rors/gerror/gerror2.go:18 // 4). main.main // /Users/john/Workspace/Go/GOPATH/src/github.com/gogf/gf/v2/geg/er= rors/gerror/gerror2.go:25
Wrap
=E6=96=
=B9=E6=B3=95=E5=B0=86=E5=BA=95=E5=B1=82=E7=9A=84=E9=94=99=E8=AF=AF=E4=BF=A1=
=E6=81=AF=E8=BF=9B=E8=A1=8C=E5=B1=82=E7=BA=A7=E5=8F=A0=E5=8A=A0=EF=BC=8C=E5=
=B9=B6=E4=B8=94=E5=8C=85=E5=90=AB=E5=AE=8C=E6=95=B4=E7=9A=84=E9=94=99=E8=AF=
=AF=E5=A0=86=E6=A0=88=E4=BF=A1=E6=81=AF=E3=80=82
H=
asStack
=E5=88=A4=
=E6=96=AD=E9=94=99=E8=AF=AF=E6=98=AF=E5=90=A6=E5=B8=A6=E5=A0=86=E6=A0=88
HasStack
=E6=
=96=B9=E6=B3=95=E6=88=91=E4=BB=AC=E5=8F=AF=E4=BB=A5=E5=88=A4=E6=96=AD=E7=BB=99=E5=AE=9A=E7=9A=84error=E6=8E=A5=E5=8F=A3=E5=AF=B9=E8=B1=A1=E6=98=AF=E5=90=A6=E5=AE=9E=E7=8E=B0=
=EF=BC=88=E5=8C=85=E5=90=AB=EF=BC=89=E4=BA=86=E5=A0=86=E6=A0=88=E4=BF=A1=E6=
=81=AF=E3=80=82
=E6=A0=BC=E5=BC=8F=EF=BC=9A
HasStack(err error) bool
=E7=A4=BA=E4=BE=8B=EF=BC=9A
func ExampleHasStack() { =09err1 :=3D errors.New("sql error") =09err2 :=3D gerror.New("write error") =09fmt.Println(gerror.HasStack(err1)) =09fmt.Println(gerror.HasStack(err2)) =09// Output: =09// false =09// true }
Stack
=E6=96=
=B9=E6=B3=95=E6=88=91=E4=BB=AC=E5=8F=AF=E4=BB=A5=E8=8E=B7=E5=BE=97err=
or
=E5=AF=B9=E8=B1=A1=E7=9A=84=E5=AE=8C=E6=95=B4=E5=A0=86=E6=A0=88=E4=
=BF=A1=E6=81=AF=EF=BC=8C=E8=BF=94=E5=9B=9E=E5=A0=86=E6=A0=88=E5=88=97=E8=A1=
=A8=E5=AD=97=E7=AC=A6=E4=B8=B2=E3=80=82 =E6=B3=A8=E6=84=8F=E5=8F=82=E6=95=
=B0=E4=B8=BA=E6=A0=87=E5=87=86=E5=BA=93error
=E7=B1=BB=E5=9E=8B=
=EF=BC=8C=E5=BD=93=E8=AF=A5=E5=8F=82=E6=95=B0=E4=B8=BAgerror
=
=E6=A8=A1=E5=9D=97=E7=94=9F=E6=88=90=E7=9A=84error
=E6=97=B6=EF=
=BC=8C =E6=88=96=E8=80=85=E5=BC=80=E5=8F=91=E8=80=85=E8=87=AA=E5=AE=9A=E4=
=B9=89=E7=9A=84error
=E5=AF=B9=E8=B1=A1=E5=AE=9E=E7=8E=B0=E4=BA=
=86=E8=AF=A5=E6=8E=A5=E5=8F=A3=E6=97=B6=E6=94=AF=E6=8C=81=E6=89=93=E5=8D=B0=
=EF=BC=8C=E5=90=A6=E5=88=99=EF=BC=8C=E8=BF=94=E5=9B=9E=E7=A9=BA=E5=AD=97=E7=
=AC=A6=E4=B8=B2=E3=80=82=E6=A0=BC=E5=BC=8F=EF=BC=9A
Stack(err error) string
=E7=A4=BA=E4=BE=8B=EF=BC=9A
func ExampleStack() { =09var err error =09err =3D errors.New("sql error") =09err =3D gerror.Wrap(err, "adding failed") =09err =3D gerror.Wrap(err, "api calling failed") =09fmt.Println(gerror.Stack(err)) =09// Output: =09// 1. api calling failed =09// 1). main.main =09// /Users/john/Workspace/Go/GOPATH/src/github.com/gogf/gf/.examp= le/other/test.go:14 =09// 2. adding failed =09// 1). main.main =09// /Users/john/Workspace/Go/GOPATH/src/github.com/gogf/gf/.examp= le/other/test.go:13 =09// 3. sql error }
Curren=
t
=E8=8E=B7=E5=8F=96=E5=BD=93=E5=89=8Derror
Current
=E6=96=B9=E6=B3=95=E7=94=A8=E4=BA=8E=E8=8E=B7=E5=8F=96=E5=BD=
=93=E5=89=8D=E5=B1=82=E7=BA=A7=E7=9A=84=E9=94=99=E8=AF=AF=E4=BF=A1=E6=81=AF=
=EF=BC=8C=E9=80=9A=E8=BF=87error
=E6=8E=A5=E5=8F=A3=E5=AF=B9=E8=B1=A1=E8=BF=94=E5=9B=9E=E3=80=
=82=E6=A0=BC=E5=BC=8F=EF=BC=9A
Current(err error) error
=E7=A4=BA=E4=BE=8B=EF=BC=9A
func ExampleCurrent() { =09var err error =09err =3D errors.New("sql error") =09err =3D gerror.Wrap(err, "adding failed") =09err =3D gerror.Wrap(err, "api calling failed") =09fmt.Println(err) =09fmt.Println(gerror.Current(err)) =09// Output: =09// api calling failed: adding failed: sql error =09// api calling failed }
Next/Unwrap
=E8=8E=B7=E5=8F=96=E4=B8=8B=E4=B8=80=E5=B1=82Next/Unwrap
=E6=96=B9=E6=B3=95=
=E7=94=A8=E4=BA=8E=E8=8E=B7=E5=8F=96=E5=B1=82=E7=BA=A7=E9=94=99=E8=AF=AF=E7=
=9A=84=E4=B8=8B=E4=B8=80=E7=BA=A7=E9=94=99=E8=AF=AFerror
=E6=8E=
=A5=E5=8F=A3=E5=AF=B9=E8=B1=A1=E3=80=82=E5=BD=93=E4=B8=8B=E4=B8=80=E5=B1=82=
=E7=BA=A7=E4=B8=8D=E5=AD=98=E5=9C=A8=E6=97=B6=EF=BC=8C=E8=BF=94=E5=9B=9EUnwrap
=E6=96=B9=E6=B3=
=95=E6=98=AFNext
=E6=96=B9=E6=B3=95=E7=9A=84=E5=88=AB=E5=90=8D=
=EF=BC=8C=E6=98=AFGolang v1.17
=E7=89=88=E6=9C=AC=E5=BC=80=E5=
=A7=8B=E6=94=AF=E6=8C=81=E7=9A=84=E9=94=99=E8=AF=AF=E5=A0=86=E6=A0=88=E9=81=
=8D=E5=8E=86=E6=96=B9=E6=B3=95=E3=80=82=E6=A0=BC=E5=BC=8F=EF=BC=9A
Next(err error) error
=E7=A4=BA=E4=BE=8B1=EF=BC=9A=E7=AE=80= =E5=8D=95=E7=9A=84=E9=94=99=E8=AF=AF=E5=B1=82=E7=BA=A7=E8=AE=BF=E9=97=AE=E7= =A4=BA=E4=BE=8B=E3=80=82
func ExampleNext() { =09var err error =09err =3D errors.New("sql error") =09err =3D gerror.Wrap(err, "adding failed") =09err =3D gerror.Wrap(err, "api calling failed") =09fmt.Println(err) =09err =3D gerror.Next(err) =09fmt.Println(err) =09err =3D gerror.Next(err) =09fmt.Println(err) =09// Output: =09// api calling failed: adding failed: sql error =09// adding failed: sql error =09// sql error }
=E7=A4=BA=E4=BE=8B2=EF=BC=9A=E5=B8=B8= =E8=A7=81=E9=81=8D=E5=8E=86=E9=80=BB=E8=BE=91=E4=BB=A3=E7=A0=81=E7=A4=BA=E4= =BE=8B=E3=80=82
func IsGrpcErrorNotFound(err err= or) bool { =09if err !=3D nil { =09=09for e :=3D err; e !=3D nil; e =3D gerror.Unwrap(e) { =09=09=09if s, ok :=3D status.FromError(e); ok && s !=3D nil &&= amp; s.Code() =3D=3D codes.NotFound { =09=09=09=09return true =09=09=09} =09=09} =09} =09return false }
Cause
=E8=8E=B7=E5=8F=96=E6=A0=B9=E9=94=99=E8=AF=AFerror
Cause
=E6=96=
=B9=E6=B3=95=E6=88=91=E4=BB=AC=E5=8F=AF=E4=BB=A5=E8=8E=B7=E5=BE=97err=
or
=E5=AF=B9=E8=B1=A1=E7=9A=84=E6=A0=B9=E9=94=99=E8=AF=AF=E4=BF=A1=E6=
=81=AF=EF=BC=88=E5=8E=9F=E5=A7=8B=E9=94=99=E8=AF=AF=EF=BC=89=E3=80=82 =E6=
=B3=A8=E6=84=8F=E5=8F=82=E6=95=B0=E4=B8=BA=E6=A0=87=E5=87=86=E5=BA=93=
error
=E7=B1=BB=E5=9E=8B=EF=BC=8C=E5=BD=93=E8=AF=A5=E5=8F=82=E6=95=B0=
=E4=B8=BAgerror
=E6=A8=A1=E5=9D=97=E7=94=9F=E6=88=90=E7=9A=84error
=E5=AF=B9=E8=B1=
=A1=E5=AE=9E=E7=8E=B0=E4=BA=86=E8=AF=A5=E6=8E=A5=E5=8F=A3=E6=96=B9=E6=B3=95=
=E6=97=B6=E6=94=AF=E6=8C=81=E6=89=93=E5=8D=B0=EF=BC=8C=E5=90=A6=E5=88=99=EF=
=BC=8C=E8=BF=94=E5=9B=9E=E8=BE=93=E5=87=BA=E7=9A=84error
=E5=AF=
=B9=E8=B1=A1=E3=80=82=E6=A0=BC=E5=BC=8F=EF=BC=9A
Next(err error) error
=E7=A4=BA=E4=BE=8B=EF=BC=9A
package main import ( =09"fmt" =09"github.com/gogf/gf/v2/errors/gerror" ) func OpenFile() error { =09return gerror.New("permission denied") } func OpenConfig() error { =09return gerror.Wrap(OpenFile(), "configuration file opening failed") } func ReadConfig() error { =09return gerror.Wrap(OpenConfig(), "reading configuration failed") } func main() { =09fmt.Println(gerror.Cause(ReadConfig())) } // Output: // permission denied