## 一、實例
~~~
package main
import "fmt"
type DirErr struct {
desc string
}
func (err *DirErr) err() string {
return fmt.Sprintf("錯誤類型:%s", err.desc)
}
func fun01(a, b int) (max int, err string) {
if a < 0 {
DirErr := DirErr{desc: "a不能小于0"}
err = DirErr.err()
return
}
if b < 0 {
DirErr := DirErr{desc: "b不能小于0"}
err = DirErr.err()
return
}
if a > b {
max = a
} else {
max = b
}
return max, ""
}
func main() {
// 1、數據正確的情況下
var a int = 10
var b int = 20
v, err := fun01(a, b)
if err != "" {
fmt.Println(err)
} else {
fmt.Println("最大值為:", v)
}
// 2、數據錯誤的情況下
var c int = 10
var d int = -2
v2, err2 := fun01(c, d)
if err2 != "" {
fmt.Println(err2)
} else {
fmt.Println("最大值為:", v2)
}
}
~~~
執行結果:
最大值為: 20
錯誤類型:b不能小于0
## 二、實例
1、 defer+recover機制處理錯誤

2、 自定義錯誤
自定義錯誤:需要調用errors包下的New函數:函數返回error類型

有一種情況:程序出現錯誤以后,后續代碼就沒有必要執行,想讓程序中斷,退出程序:
借助:builtin包下內置函數:panic

