recover/panic
panic会让程序停止,为了防止因panic造成这类问题,需要将panic覆盖掉
Painc用法是:用于抛出错误。Recover()用法是:将Recover()写在defer中,并且在可能发生panic的地方之前,先调用此defer的东西(让系统方法域结束时,有代码要执行。)当程序遇到panic的时候(当然,也可以正常的调用出现的异常情况),系统将跳过后面的代码,进入defer,如果defer函数中recover(),则返回捕获到的panic的值。
package mainimport ( "fmt" "runtime" "time")func test() { defer func() { //覆盖panic,将panic输出而不停止程序 if err := recover(); err != nil { fmt.Println("panic:", err) } }() var m map[string]int //该map没有make,会报错! m["stu"] = 100}func calc() { for { fmt.Println("i'm calc") time.Sleep(time.Second) }}func main() { num := runtime.NumCPU() runtime.GOMAXPROCS(num - 1) go test() for i := 0; i < 2; i++ { go calc() } time.Sleep(time.Second * 10000)}
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。