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
  • 相关阅读:
    javascript中map的用法
    洛谷P1057传球游戏-题解
    洛谷P1049装箱问题-题解
    洛谷P1048采药-题解
    洛谷P1044栈-题解
    洛谷P1040加分二叉树-题解
    洛谷P1005矩阵取数游戏-题解
    洛谷P1004方格取数-题解
    洛谷P1002过河卒-题解
    搜索
  • 原文地址:https://www.cnblogs.com/williamjie/p/9933521.html
Copyright © 2011-2022 走看看