golang 函数学习(三)

panic

panic主要用于作异常处理,是一个内建的停止控制流函数。相当于其它编程语言的抛异常。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

package main

import "fmt"

func getname() string{

return "name"
}

func main(){


fmt.Println("starting......!")

a :=23
if a == 23 {
panic("crash") //手动触发宕机
}
fmt.Println(getname())


}

recover

recover是内建函数,可以让进入宕机流程恢复回来,同时recover仅在defer中有效。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
package main

import "fmt"

func getname() string{

return "name"
}

func main(){

defer func(){
err:=recover()
if err !=nil{
fmt.Println("触发宕机捕获异常:",err)
}
}() //recover只能在defer中

fmt.Println("starting......!")

a :=23
if a == 23 {
panic("crash") //手动触发宕机,后面的代码不会执行
}
fmt.Println(getname())


}