panic
php使用try...catch对异常进行捕获和处理,在go中使用panic抛出。
packagemainimportfmtfuncmain(){deferfunc(){fmt.Println(defer会执行)}()a:=0if(a==0){panic(除数是0)}c:=/afmt.Printf(上面出现异常,不会执行到这里)fmt.Printf(%d,c)}
recover
在php中对异常的捕获和处理,避免程序崩溃,使用的是try...catch...finally,在go中,对应的实现方式是:通过recover()函数对panic进行捕获和处理,panic的捕获和其他代码的恢复执行需要放到defer语句中完成。
packagemainimportfmtfuncmain(){deferfunc(){iferr:=recover();err!=nil{fmt.Printf(程序执行报错了:%v\n,err)}}()a:=0if(a==0){panic(除数是0)}c:=/afmt.Printf(上面出现异常,不会执行到这里)fmt.Printf(%d,c)}