【Go简明手册】错误处理

错误处理*

错误处理是任何语言都需要考虑到的问题,而 Go 语言在错误处理上解决得更为完善,优雅的错误处理机制是 Go 语言的一大特点。

error

Go 语言引入了一个错误处理的标准模式,即 error 接口,该接口定义如下:

1
2
3
type error interface {
Error() string
}

对于大多数函数,如果要返回错误,可以将 error 作为多返回值的最后一个:

1
2
3
4
func foo(param int)(ret int, err error)
{
...
}

调用时的代码:

1
2
3
4
5
6
n, err := foo(0)
if err != nil {
// 错误处理
} else {
// 使用返回值n
}

我们还可以自定义错误类型,创建源文件 error.go,输入以下代码:

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
29
30
31
32
33
34
35
package main

import "fmt"
import "errors"

//自定义的出错结构
type myError struct {
arg int
errMsg string
}
//实现Error接口
func (e *myError) Error() string {
return fmt.Sprintf("%d - %s", e.arg, e.errMsg)
}

//两种出错
func error_test(arg int) (int, error) {
if arg < 0 {
return -1, errors.New("Bad Arguments - negtive!")
}else if arg >256 {
return -1, &myError{arg, "Bad Arguments - too large!"}
}
return arg*arg, nil
}

//相关的测试
func main() {
for _, i := range []int{-1, 4, 1000} {
if r, e := error_test(i); e != nil {
fmt.Println("failed:", e)
} else {
fmt.Println("success:", r)
}
}
}

【Go简明手册】错误处理
https://hodlyounger.github.io/B_Code/GO/Go简明手册/Go语言顺序编程/错误处理/【Go简明手册】错误处理/
作者
mingming
发布于
2023年10月27日
许可协议