1package errors_test 2 3import ( 4 "fmt" 5 6 "github.com/pkg/errors" 7) 8 9func ExampleNew() { 10 err := errors.New("whoops") 11 fmt.Println(err) 12 13 // Output: whoops 14} 15 16func ExampleNew_printf() { 17 err := errors.New("whoops") 18 fmt.Printf("%+v", err) 19 20 // Example output: 21 // whoops 22 // github.com/pkg/errors_test.ExampleNew_printf 23 // /home/dfc/src/github.com/pkg/errors/example_test.go:17 24 // testing.runExample 25 // /home/dfc/go/src/testing/example.go:114 26 // testing.RunExamples 27 // /home/dfc/go/src/testing/example.go:38 28 // testing.(*M).Run 29 // /home/dfc/go/src/testing/testing.go:744 30 // main.main 31 // /github.com/pkg/errors/_test/_testmain.go:106 32 // runtime.main 33 // /home/dfc/go/src/runtime/proc.go:183 34 // runtime.goexit 35 // /home/dfc/go/src/runtime/asm_amd64.s:2059 36} 37 38func ExampleWithMessage() { 39 cause := errors.New("whoops") 40 err := errors.WithMessage(cause, "oh noes") 41 fmt.Println(err) 42 43 // Output: oh noes: whoops 44} 45 46func ExampleWithStack() { 47 cause := errors.New("whoops") 48 err := errors.WithStack(cause) 49 fmt.Println(err) 50 51 // Output: whoops 52} 53 54func ExampleWithStack_printf() { 55 cause := errors.New("whoops") 56 err := errors.WithStack(cause) 57 fmt.Printf("%+v", err) 58 59 // Example Output: 60 // whoops 61 // github.com/pkg/errors_test.ExampleWithStack_printf 62 // /home/fabstu/go/src/github.com/pkg/errors/example_test.go:55 63 // testing.runExample 64 // /usr/lib/go/src/testing/example.go:114 65 // testing.RunExamples 66 // /usr/lib/go/src/testing/example.go:38 67 // testing.(*M).Run 68 // /usr/lib/go/src/testing/testing.go:744 69 // main.main 70 // github.com/pkg/errors/_test/_testmain.go:106 71 // runtime.main 72 // /usr/lib/go/src/runtime/proc.go:183 73 // runtime.goexit 74 // /usr/lib/go/src/runtime/asm_amd64.s:2086 75 // github.com/pkg/errors_test.ExampleWithStack_printf 76 // /home/fabstu/go/src/github.com/pkg/errors/example_test.go:56 77 // testing.runExample 78 // /usr/lib/go/src/testing/example.go:114 79 // testing.RunExamples 80 // /usr/lib/go/src/testing/example.go:38 81 // testing.(*M).Run 82 // /usr/lib/go/src/testing/testing.go:744 83 // main.main 84 // github.com/pkg/errors/_test/_testmain.go:106 85 // runtime.main 86 // /usr/lib/go/src/runtime/proc.go:183 87 // runtime.goexit 88 // /usr/lib/go/src/runtime/asm_amd64.s:2086 89} 90 91func ExampleWrap() { 92 cause := errors.New("whoops") 93 err := errors.Wrap(cause, "oh noes") 94 fmt.Println(err) 95 96 // Output: oh noes: whoops 97} 98 99func fn() error { 100 e1 := errors.New("error") 101 e2 := errors.Wrap(e1, "inner") 102 e3 := errors.Wrap(e2, "middle") 103 return errors.Wrap(e3, "outer") 104} 105 106func ExampleCause() { 107 err := fn() 108 fmt.Println(err) 109 fmt.Println(errors.Cause(err)) 110 111 // Output: outer: middle: inner: error 112 // error 113} 114 115func ExampleWrap_extended() { 116 err := fn() 117 fmt.Printf("%+v\n", err) 118 119 // Example output: 120 // error 121 // github.com/pkg/errors_test.fn 122 // /home/dfc/src/github.com/pkg/errors/example_test.go:47 123 // github.com/pkg/errors_test.ExampleCause_printf 124 // /home/dfc/src/github.com/pkg/errors/example_test.go:63 125 // testing.runExample 126 // /home/dfc/go/src/testing/example.go:114 127 // testing.RunExamples 128 // /home/dfc/go/src/testing/example.go:38 129 // testing.(*M).Run 130 // /home/dfc/go/src/testing/testing.go:744 131 // main.main 132 // /github.com/pkg/errors/_test/_testmain.go:104 133 // runtime.main 134 // /home/dfc/go/src/runtime/proc.go:183 135 // runtime.goexit 136 // /home/dfc/go/src/runtime/asm_amd64.s:2059 137 // github.com/pkg/errors_test.fn 138 // /home/dfc/src/github.com/pkg/errors/example_test.go:48: inner 139 // github.com/pkg/errors_test.fn 140 // /home/dfc/src/github.com/pkg/errors/example_test.go:49: middle 141 // github.com/pkg/errors_test.fn 142 // /home/dfc/src/github.com/pkg/errors/example_test.go:50: outer 143} 144 145func ExampleWrapf() { 146 cause := errors.New("whoops") 147 err := errors.Wrapf(cause, "oh noes #%d", 2) 148 fmt.Println(err) 149 150 // Output: oh noes #2: whoops 151} 152 153func ExampleErrorf_extended() { 154 err := errors.Errorf("whoops: %s", "foo") 155 fmt.Printf("%+v", err) 156 157 // Example output: 158 // whoops: foo 159 // github.com/pkg/errors_test.ExampleErrorf 160 // /home/dfc/src/github.com/pkg/errors/example_test.go:101 161 // testing.runExample 162 // /home/dfc/go/src/testing/example.go:114 163 // testing.RunExamples 164 // /home/dfc/go/src/testing/example.go:38 165 // testing.(*M).Run 166 // /home/dfc/go/src/testing/testing.go:744 167 // main.main 168 // /github.com/pkg/errors/_test/_testmain.go:102 169 // runtime.main 170 // /home/dfc/go/src/runtime/proc.go:183 171 // runtime.goexit 172 // /home/dfc/go/src/runtime/asm_amd64.s:2059 173} 174 175func Example_stackTrace() { 176 type stackTracer interface { 177 StackTrace() errors.StackTrace 178 } 179 180 err, ok := errors.Cause(fn()).(stackTracer) 181 if !ok { 182 panic("oops, err does not implement stackTracer") 183 } 184 185 st := err.StackTrace() 186 fmt.Printf("%+v", st[0:2]) // top two frames 187 188 // Example output: 189 // github.com/pkg/errors_test.fn 190 // /home/dfc/src/github.com/pkg/errors/example_test.go:47 191 // github.com/pkg/errors_test.Example_stackTrace 192 // /home/dfc/src/github.com/pkg/errors/example_test.go:127 193} 194 195func ExampleCause_printf() { 196 err := errors.Wrap(func() error { 197 return func() error { 198 return errors.Errorf("hello %s", fmt.Sprintf("world")) 199 }() 200 }(), "failed") 201 202 fmt.Printf("%v", err) 203 204 // Output: failed: hello world 205} 206