github.com/sttk/sabi@v0.5.0/example_notify_test.go (about) 1 package sabi_test 2 3 import ( 4 "fmt" 5 "strconv" 6 "time" 7 8 "github.com/sttk/sabi" 9 ) 10 11 func ExampleAddAsyncErrHandler() { 12 sabi.AddAsyncErrHandler(func(err sabi.Err, occ sabi.ErrOccasion) { 13 fmt.Println("Asynchronous error handling: " + err.Error()) 14 }) 15 sabi.FixErrCfgs() 16 17 type FailToDoSomething struct{ Name string } 18 19 sabi.NewErr(FailToDoSomething{Name: "abc"}) 20 21 // Output: 22 // Asynchronous error handling: {reason=FailToDoSomething, Name=abc} 23 24 time.Sleep(100 * time.Millisecond) 25 sabi.ClearErrHandlers() 26 } 27 28 func ExampleAddSyncErrHandler() { 29 sabi.AddSyncErrHandler(func(err sabi.Err, occ sabi.ErrOccasion) { 30 fmt.Println("Synchronous error handling: " + err.Error()) 31 }) 32 sabi.FixErrCfgs() 33 34 type FailToDoSomething struct{ Name string } 35 36 sabi.NewErr(FailToDoSomething{Name: "abc"}) 37 38 // Output: 39 // Synchronous error handling: {reason=FailToDoSomething, Name=abc} 40 41 sabi.ClearErrHandlers() 42 } 43 44 func ExampleFixErrCfgs() { 45 sabi.AddSyncErrHandler(func(err sabi.Err, occ sabi.ErrOccasion) { 46 fmt.Println("This handler is registered at " + occ.File() + ":" + 47 strconv.Itoa(occ.Line())) 48 }) 49 50 sabi.FixErrCfgs() 51 52 sabi.AddSyncErrHandler(func(err sabi.Err, occ sabi.ErrOccasion) { 53 fmt.Println("This handler is not registered") 54 }) 55 56 type FailToDoSomething struct{ Name string } 57 58 sabi.NewErr(FailToDoSomething{Name: "abc"}) 59 60 // Output: 61 // This handler is registered at example_notify_test.go:58 62 63 sabi.ClearErrHandlers() 64 }