panic的地方之前,先調用此defer的東西(讓系統方法域結束時,有代碼要執行。)當程序遇到panic的時候(當然,也可以正常的調用出現的異常
情況),系統將跳過後面的代碼,進入defer,如果defer函數中recover(),則返回捕獲到的panic的值。
2、代碼:
package main
import "fmt"
func main() {
fmt.Printf("hello world my name is %s, I'm %d\r\n", "songxingzhu", 26)
defer func() {
if err := recover(); err != nil {
fmt.Println("出了錯:", err)
}
}()
myPainc()
fmt.Printf("這裏應該執行不到!")
}
func myPainc() {
var x = 30
var y = 0
//panic("我就是壹個大錯誤!")
var c = x / y
fmt.Println(c)
}
3、執行結果:
Atom Runner: main.go
hello world my name is songxingzhu, I'm 26
出了錯: runtime error: integer divide by zeroExited with code=0 in 1.667 seconds