go语言学习(四)——异常
go语言中的异常处理的关键字为defer,panic和recover,类比于其他语言的try,catch和finally,但go语言中的使用方法有些不同
下面是我的练习代码:
// GoStudy0215 project main.go
/*
go语言学习——异常
*/
package main
import (
"fmt"
)
func main() {
defer func() { //defer执行后,结束该函数的时候会调用
if r := recover(); r != nil { //捕获错误信息,以进行相应的错误处理
fmt.Println(r) //错误处理
}
}() //这里加括号表示调用这个函数
defer func() { //defer是一个栈,后定义的defer会先执行
fmt.Println("func end !!!")
}()
testFunc1() //这里调用panic之后,后面的不会执行,开始执行终止程序
testFunc2()
defer func() { //这个defer没有执行到,所以main函数结束的时候,并不会调用这个defer
fmt.Println("no print")
}()
}
func testFunc1() {
fmt.Println("test func start")
//由于某种原因,出现了错误
//比如,游戏中的人物因为这个函数移动到了场景外
//执行下面的语句,终止这个函数,层层往上终止,直至终止这个线程
panic("404")
fmt.Println("test func end")
}
func testFunc2() {
panic(555)
}
通过我上面的代码能够看出来,相比于try,catch,finally好的地方在于,我们可以把应该正常执行的代码,和错误处理的代码完全分离,而不用向原来那样将正常的代码,错误处理的代码写在一起,使代码层次混乱
以上,异常结束

浙公网安备 33010602011771号