golang 错误处理

战神悟空 · · 934 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

Go 语言使用 error 类型来返回函数执行过程中遇到的错误,如果返回的 error 值为 nil,则表示没有错误,否则 error 会返回一个说明错误的字符串。

其实 error 只是一个接口,定义如下:

type error interface {
    Error() string
}

你可以用任何类型去实现它(只要实现 Error() 方法即可)。

通过new 函数,生成简单的 error 对象

package main

import (
    "fmt"
    "iris/core/errors"
)

func run(code int) error {
    if code > 0 {
        return errors.New("这是一个错误")
    }
    return nil;
}

func main() {

    // 有错误
    err1 := run(601)
    fmt.Println(err1)

    // 无错误
    err2 := run(0)
    fmt.Println(err2)
}

通过实现Error()方法自定义错误


package main

import (
    "fmt"
    "time"
)

// 自定义错误
type myError struct {
    err   string
    time  time.Time
    appName string
}

func (myError *myError) Error() string {
    return fmt.Sprintf("AppName:%s Error:%s RequestTime:%s", myError.appName, myError.err, myError.time)
}

func AppErr(err string, appName string) *myError {
    return &myError{
        err:   err,
        time:  time.Now(),
        appName: appName,
    }
}

func run(code int) error {
    if code > 0 {
        return AppErr("这是一个自定义错误","UCenter");
    }
    return nil;
}

func main() {
    // 有错误
    err1 := run(601)
    fmt.Println(err1)

    // 无错误
    err2 := run(0)
    fmt.Println(err2)
}


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:战神悟空

查看原文:golang 错误处理

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

934 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传