go-doc-错误

错误处理

错误要点

  1. Go语言追求简洁优雅,所以,Go语言不支持传统的try…catch…finally
  2. Go中引入的处理方式为:defer、panic、recover
  3. Go中可以抛出一个panic的一次,然后再defer中通过recover捕获这个异常,然后正常处理
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
package main 

import (
"fmt"
)

func test() {
// defer + recover 捕获和处理异常
defer func() {
// recover() 捕获异常
err := recover()
if err != nil {
fmt.Println("err = ", err)
}
}()

var num1 = 10
var num2 = 0
var res = num1 / num2

fmt.Println("res = ", res)
}

func main() {
test()

fmt.Println("异常之后.....")
}

自定义错误

Go程序中,自定义错误使用error.New和panic内置函数处理。

errows.New(“错误说明”),会返回一个error类型的值,表示一个错误
panic内置函数,接收一个interface{}类型的值(也就是任何值)作为参数。可以接收error类型的变量,输出错误信息,并退出程序。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package main 

import (
"fmt"
"errors"
)

func test2(i int) (err error) {
if i == 1 {
return nil
} else {
return errors.New("自定义错误...")
}
}

func main() {
err := test2(2)
if err != nil {
panic(err)
}

fmt.Println("异常之后.....")
}