go中的错误处理

目前go中的错误处理机制比较简单。往往是通过一个error实例来传达错误信息。go内置一个error接口来默认处理错误:

type error interface {
    Error() string
}
...
func main()[
    i,error := someType.Method("110")
    if error != nil {
        //处理
    }
    fmt.Printf("the value is %v\n",i)
}

函数调用后,判断error是否为nil。error为nil表示函数顺利执行,否则处理错误。

我们也可以自定义一个错误接口,按需返回期望的错误信息:

//自定义一个错误类型,并实现Error方法
type CustomerError struct{
    When time.time
    What string
}
func (e *CustomerError) Error() string{
    return fmt.Sprintf("at %v, %s", e.When, e.What)
}
...
//某函数内部
if value<=0 {
    return &CustomerError{
        time.Now(),
        "value must larger than 0",
    }
}
...
//执行栈中
i,error := somefunc(value)
if err != nil {
   fmt.Println(err)
}
//输出:
at 2018-08-30 16:29:30.79250559 +0800 CST m=+0.000562311, value must larger than 0

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值