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好的地方在于,我们可以把应该正常执行的代码,和错误处理的代码完全分离,而不用向原来那样将正常的代码,错误处理的代码写在一起,使代码层次混乱

以上,异常结束

原文地址:https://www.cnblogs.com/singledigit/p/6381742.html