Last active
July 5, 2019 09:15
-
-
Save baijum/62efd169991822de5b3d3a04a86e3682 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| package main | |
| import ( | |
| "fmt" | |
| "github.com/pkg/errors" | |
| ) | |
| func inner() error { | |
| cause := errors.New("Error") | |
| return errors.Wrapf(cause, "Inner") | |
| } | |
| func first() error { | |
| cause := inner() | |
| return errors.Wrapf(cause, "First") | |
| } | |
| func main() { | |
| err := first() | |
| if err != nil { | |
| fmt.Printf("%+v\n", err) | |
| err = errors.Cause(err) | |
| fmt.Printf("%+v\n", err) | |
| err = errors.Cause(err) | |
| fmt.Printf("%+v\n", err) | |
| } | |
| } | |
| /* Output: | |
| Error | |
| main.inner | |
| /home/baiju/error2.go:10 | |
| main.first | |
| /home/baiju/error2.go:15 | |
| main.main | |
| /home/baiju/error2.go:19 | |
| runtime.main | |
| /home/baiju/go1.13beta1/src/runtime/proc.go:203 | |
| runtime.goexit | |
| /home/baiju/go1.13beta1/src/runtime/asm_amd64.s:1357 | |
| Inner | |
| main.inner | |
| /home/baiju/error2.go:11 | |
| main.first | |
| /home/baiju/error2.go:15 | |
| main.main | |
| /home/baiju/error2.go:19 | |
| runtime.main | |
| /home/baiju/go1.13beta1/src/runtime/proc.go:203 | |
| runtime.goexit | |
| /home/baiju/go1.13beta1/src/runtime/asm_amd64.s:1357 | |
| First | |
| main.first | |
| /home/baiju/error2.go:16 | |
| main.main | |
| /home/baiju/error2.go:19 | |
| runtime.main | |
| /home/baiju/go1.13beta1/src/runtime/proc.go:203 | |
| runtime.goexit | |
| /home/baiju/go1.13beta1/src/runtime/asm_amd64.s:1357 | |
| Error | |
| main.inner | |
| /home/baiju/error2.go:10 | |
| main.first | |
| /home/baiju/error2.go:15 | |
| main.main | |
| /home/baiju/error2.go:19 | |
| runtime.main | |
| /home/baiju/go1.13beta1/src/runtime/proc.go:203 | |
| runtime.goexit | |
| /home/baiju/go1.13beta1/src/runtime/asm_amd64.s:1357 | |
| Error | |
| main.inner | |
| /home/baiju/error2.go:10 | |
| main.first | |
| /home/baiju/error2.go:15 | |
| main.main | |
| /home/baiju/error2.go:19 | |
| runtime.main | |
| /home/baiju/go1.13beta1/src/runtime/proc.go:203 | |
| runtime.goexit | |
| /home/baiju/go1.13beta1/src/runtime/asm_amd64.s:1357 | |
| */ |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| package main | |
| import ( | |
| "errors" | |
| "fmt" | |
| ) | |
| func inner() error { | |
| return fmt.Errorf("Inner %w", errors.New("Error")) | |
| } | |
| func first() error { | |
| return fmt.Errorf("First %w", inner()) | |
| } | |
| func main() { | |
| err := first() | |
| if err != nil { | |
| fmt.Printf("%+v\n", err) | |
| err = errors.Unwrap(err) | |
| fmt.Printf("%+v\n", err) | |
| err = errors.Unwrap(err) | |
| fmt.Printf("%+v\n", err) | |
| err = errors.Unwrap(err) | |
| fmt.Printf("%+v\n", err) | |
| err = errors.Unwrap(err) | |
| fmt.Printf("%+v\n", err) | |
| } | |
| } | |
| /* Output: | |
| First Inner Error | |
| Inner Error | |
| Error | |
| <nil> | |
| <nil> | |
| */ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment