乔拓云智能建站官网登录入口,天津手机网站公司,网站模板如何删除,怎么看网站是否备案成功定义
panic 改变程序控制流立即停止当前函数剩余代码#xff0c;调用defer 只会执行当前协程的defer recover 可以终止panic造成的程序崩溃只能在defer中发挥作用
package mainimport (fmttime
)func main() {defer func() {fmt.Println(ma…定义
panic 改变程序控制流立即停止当前函数剩余代码调用defer 只会执行当前协程的defer recover 可以终止panic造成的程序崩溃只能在defer中发挥作用
package mainimport (fmttime
)func main() {defer func() {fmt.Println(main——不是panic的协程的defer)}()go func() {defer func() {fmt.Println(panic协程——defer——执行recover)if err : recover(); err ! nil{fmt.Println(panic协程——recover协程拉起:,err)}}()defer func() {fmt.Println(panic协程——defer——什么都不做)}()a : 0fmt.Println(23/a)//panic(go die)fmt.Println(panic协程——after go die, can i print)//panic之后不回调用defer func() {fmt.Println(panic协程——defer——panic发生后面定义)}()}()//没啥作用if err : recover(); err ! nil{fmt.Println(main——非panic协程拉起)}fmt.Println(main——panic after跑的比较快)time.Sleep(time.Second * 3)fmt.Println(main——panic after time)
}
输出
main——panic after跑的比较快
panic协程——defer——什么都不做
panic协程——defer——执行recover
panic协程——recover协程拉起: runtime error: integer divide by zero
main——panic after time
main——不是panic的协程的defer