🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## 一、自定义抛出异常 ~~~ package main import "fmt" //系统抛异常 func test01() { a := [5]int{0, 1, 2, 3, 4} //a[10] = 123 index := 10 a[index] = 123 } func main() { //panic: runtime error: index out of range //test01() //test02() //test03() test04() } //自己抛异常 func test02() { getCircleArea(-5) } func getCircleArea(radius float32) (area float32) { if radius < 0 { //抛异常 panic("您的智商已下线,半径不能为负数") } return 3.14 * radius * radius } func test03() { //延时执行匿名函数 //延时到什么时候?要么正常结束,要么出异常 //recover()是复活的意思 defer func() { if err := recover(); err != nil { fmt.Println(err) } }() //会报错 getCircleArea(-5) //下句话没有打印 fmt.Println("这里有没有执行?") } func test04() { test03() fmt.Println("GAME OVER") } ~~~ ## 二、返回异常 ~~~ package main import ( "errors" "fmt" ) //算半径 func getCircleArea(radius float32) (ret float32, err error) { if radius < 0 { //创建异常 err = errors.New("沙雕,半径不能为负数") return } ret = 3.14 * radius * radius return } func main() { ret, err := getCircleArea(5) if err != nil { fmt.Println(err) } else { fmt.Println("ret=", ret) } } ~~~