您的位置:首页 > Web前端

golang的defer,recover,panic用法

2018-01-29 21:15 726 查看
示例如下:

package main

import (
"fmt"
)

func defer_call() {
defer func() {
fmt.Println("before")
}()

defer func() {
if p := recover(); p != nil {
fmt.Println("normal panic")
} else {
fmt.Println("no panic")
}
}()

defer func() {
fmt.Println("after")
}()

panic("panic")

fmt.Println("come on")
}

func main() {
defer_call()
}


输出:

after

normal panic

before

defer按照先进后出的原则执行.

recover()截获了panic()的行为, recover()返回的值不为nil. 否则为空.

由于触发了panic, 字符串”come on”没有被输出.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: