zoukankan      html  css  js  c++  java
  • golang自定义返回error

     

    在开发过程中, 标准库返回的error内容已经无法满足我们的需要时,发现builtin.go中error是一个interface,
    type error interface {
        Error() string
    }
    所以只需要创建一个包含Error() string函数的结构体即可。
     
    1.在go path下新建errors包
    vim $GOPATH/github.com/mypractise/error/errors.go
    复制代码

    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
    复制代码

    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)
    }

    复制代码
    go run ./test.go
  • 相关阅读:
    基本内置类型
    多维数组
    数组
    迭代器
    标准库类型 vector
    标准库类型 string
    运算符优先级表
    类型转换
    sizeof 和逗号运算符
    位运算符
  • 原文地址:https://www.cnblogs.com/williamjie/p/9933521.html
Copyright © 2011-2022 走看看