## 一、自定義拋出異常
~~~
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)
}
}
~~~
- 一、數組
- 二、切片
- 三、copy
- 四、MAP
- 五、結構體
- 六、結構體參數
- 七、面向”對象“
- 1、匿名字段
- 2、方法
- 3、包和封裝
- 4、接口
- 5、異常處理
- 八、Json
- 九、文件操作
- 1、寫文件
- 2、讀取文件內容
- 3、拷貝文件
- 十、反射
- 1、查看類型,字段和方法
- 2、查看匿名字段
- 3、修改基本類型的值
- 4、修改結構體的值
- 5、調用方法
- 十一、并發編程
- 1、并行和并發
- 2、協程
- 3、runtime包
- 5、channel的使用
- 6、close
- 7、定時器
- 8、select
- 9、協程同步鎖
- 十二、socket編程
- 十三、Http編程
- 十四、并發爬蟲和數據處理
- 1、簡易爬蟲實例
- 2、并發爬取圖片
- 3、讀文件中的數據
- 4、數據清洗
- 其他
- 1、推薦文章