Golang如何定义error


本文摘自php中文网,作者angryTom,侵删。

Golang如何定义error

在开发过程中, 标准库返回的error内容已经无法满足我们的需要时,发现builtin.go中error是一个interface,

相关推荐:golang教程

1

2

3

type error interface {

    Error() string

}

所以只需要创建一个包含Error() string函数的结构体即可。

1、在go path下新建errors包

vim $GOPATH/github.com/mypractise/error/errors.go

1

2

3

4

5

6

7

8

9

10

11

12

13

14

package errors

 

type Error struct {

    ErrCode int

    ErrMsg  string

}

 

func NewError(code int, msg string) *Error {

    return &Error{ErrCode: code, ErrMsg: msg}

}

 

func (err *Error) Error() string {

    return err.ErrMsg

}

2、开始调用errors包

vim ./test.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

package main

 

import (

    "encoding/json"

    "errors"

    "fmt"

 

    myerr "github.com/mypractise/errors"

)

 

func myErr() error {

 

    err := myerr.NewError(2, "err test")

    return err

}

 

func staErr() error {

    m := make(map[string]string)

    err := json.Unmarshal([]byte(""), m)

    if err != nil {

        return err

    }

 

    return errors.New("aaaaa")

}

 

func main() {

    err1 := staErr()

    fmt.Println("------sta err:", err1.Error())

 

    err2 := myErr()

    fmt.Println("------my err:", err2.Error(), err2.(*myerr.Error).ErrCode)

}

3、运行测试

1

go run ./test.go

PHP中文网,大量编程教程和网站建设教程,欢迎学习。

以上就是Golang如何定义error的详细内容,更多文章请关注木庄网络博客!!

相关阅读 >>

手撸golang go与微服务 saga模式之8 集成测试

go语言入门教程06 常量

模块一 go语言基础知识-库源码文件

golang变量的数据类型

go-carbon 1.2.4 版本发布,新增系列时间比较方法

go的值类型和引用类型1——传递和拷贝

golang 怎么做热更新

go-interface

go1.16 embed 实践

golang 协程+channel+select 实现最简单的斐波那契数列

更多相关阅读请进入《golang》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...