hi,你好!欢迎访问本站!登录
本站由简数采集腾讯云宝塔系统阿里云强势驱动
当前位置:首页 - 文章 - 后端开发 - 正文 看Cosplay古风插画小姐姐,合集图集打包下载:炫龙网 · 炫龙图库

golang返回错误时怎样正确处理_后端开发

2019-12-25后端开发ki4网22°c
A+ A-

准确处理要领:

一、失利的缘由只要一个时,不运用error

比方:

func (self *AgentContext) CheckHostType(host_type string) error {
    switch host_type {
    case "virtual_machine":        
                return nil
    case "bare_metal":    
            return nil
    }
    return errors.New("CheckHostType ERROR:" + host_type)
}

我们能够看出,该函数失利的缘由只要一个,所以返回值的范例应该为bool,而不是error,重构一下代码:

func (self *AgentContext) IsValidHostType(hostType string) bool {
    return hostType == "virtual_machine" || hostType == "bare_metal"}

申明:大多数状况,致使失利的缘由不止一种,尤其是对I/O操纵而言,用户须要相识更多的毛病信息,这时候的返回值范例不再是简朴的bool,而是error。

二、没有失利时,不运用error

error在Golang中是云云的盛行,以至于很多人设想函数时不管三七二十一都运用error,纵然没有一个失利缘由。

我们看一下示例代码:

func (self *CniParam) setTenantId() error {
    self.TenantId = self.PodNs    
    return nil}

关于上面的函数设想,就会有下面的挪用代码:

err := self.setTenantId()
if err != nil {
    // log
    // free resource
    return errors.New(...)
}

依据我们的准确姿态,重构一下代码:

func (self *CniParam) setTenantId() {
    self.TenantId = self.PodNs
}

因而挪用代码变成:

self.setTenantId()

三、error应放在返回值范例列表的末了

关于返回值范例error,用来通报毛病信息,在Golang中一般放在末了一个。

resp, err := http.Get(url)
if err != nil {    
    return nill, err
}

bool作为返回值范例时也一样。

value, ok := cache.Lookup(key) 
if !ok {    
// ...cache[key] does not exist… 
}

四、毛病逐层通报时,层层都加日记

层层都加日记异常轻易毛病定位。

相干文章教程引荐:golang教程

以上就是golang返回毛病时怎样准确处理的细致内容,更多请关注ki4网别的相干文章!

  选择打赏方式
微信赞助

打赏

QQ钱包

打赏

支付宝赞助

打赏

  选择分享方式
  移步手机端
golang返回错误时怎样正确处理_后端开发

1、打开你手机的二维码扫描APP
2、扫描左则的二维码
3、点击扫描获得的网址
4、可以在手机端阅读此文章

发表评论

选填

必填

必填

选填

请拖动滑块解锁
>>