func main() {
GoA()
time.Sleep(1 * time.Second)
fmt.Println("main")
}
func GoA() {
defer (func(){
if err := recover(); err != nil {
fmt.Println("panic:" + fmt.Sprintf("%s", err))
}
})()
go GoB()
}
func GoB() {
panic("error")
}
因为 defer 只对当前协程有效, panic("error") 无法捕获?
有什么好的方法,可以捕获到吗?
我觉得是你写的有问题。。。
这个写法,你根本不能保证先执行panic还是先执行defer