> golang沒有try catch 使用defer+recover來處理異常
func test() int {
defer func() {
err := recover() //捕獲異常
if err != nil {
fmt.Println("err=", err)
}
}()
num1 := 10
num2 := 0
res := num1 / num2
return res
}
> 自定義錯誤errors.New panic
errors.new("錯誤說明"),會返回一個error類型的值
panic內置函數,接受一個interface{}類型的值(也就是任何值)作為參數,可以接收error類型的變量,輸出錯誤信息,并退出程序
```
package main
import (
"errors"
"fmt"
)
func readConf(filename string) (err error) {
if filename == "config.ini" {
return nil
? ? }
return errors.New("文件名不正確")
}
func test02() {
res := readConf("config1.ini")
if res != nil {
panic(res) //不繼續往下執行
? ? }
? ? fmt.Println("test02()繼續執行")
}
func main() {
test02()
? ? fmt.Println("main()繼續執行") //此處無法執行
}
```

- 數據類型
- 數組array
- 切片slice
- 字符串string
- map
- 結構體struct
- 方法func
- 匿名結構體(繼承)
- 字段別名
- 接口interface
- 常量
- 基礎語法
- 循環for
- 遍歷
- 函數func
- defer
- 異常處理error
- 訪問范圍
- 包
- 類型斷言
- 文件
- 打開文件
- 讀取文件
- 寫文件
- 判斷是否存在
- 拷貝文件
- JSON
- 序列化
- 反序列化
- 命令行
- 雜項
- Windows下配置加速
- 相關鏈接
- 占位符
- 隨機數rand
- 單元測試
- goroutine
- 并發和并行
- 協程和主線程
- MPG模式
- 設置CPU數量
- 全局互斥鎖
- 管道
- 示例1
- 示例2
- select
- 異常捕獲
- 反射
- 示例
- 示例-改變值
- 網絡編程
- TCP編程
- 示例一
- redis