错误示例
type chanData struct {
result string
error error
}
func Biz1() {
t := time.NewTimer(time.Second * 10)
ctx := context.Background()
ch := make(chan chanData)
go doChan(ctx, ch)
fmt.Println("Biz1 begin")
for {
select {
case <-t.C:
fmt.Println("Biz1 to time")
return
case data := <-ch:
fmt.Println("Biz1 data", jsonx.ToString(data.result), "Biz1 err", data.error.Error())
return
}
}
}
type RecoverHook func()
func Recover(ctx context.Context, method string, hooks ...RecoverHook) {
if err := recover(); err != nil {
const size = 64 << 10
buf := make([]byte, size)
buf = buf[:runtime.Stack(buf, false)]
fmt.Printf("panic err: %v\n%v\n end!!!\n", err, string(buf))
for