关于Go程序错误处理的一些提议
发布时间:2021-11-03 10:35:10  所属栏目:语言  来源:互联网 
            导读:Go的错误处理这块是日常被大家吐槽较多的地方,我在工作中也观察到一些现象,比较严重的是在各层级的逻辑代码中对错误的处理有些重复。比如,有人写代码就会在每一层都判断错误并记录日志,从代码层面看,貌似很严谨,但是如果看日志会发现一堆重复的信息,
                
                
                
            | 
                        Go的错误处理这块是日常被大家吐槽较多的地方,我在工作中也观察到一些现象,比较严重的是在各层级的逻辑代码中对错误的处理有些重复。
	 
	比如,有人写代码就会在每一层都判断错误并记录日志,从代码层面看,貌似很严谨,但是如果看日志会发现一堆重复的信息,等到排查问题时反而会造成干扰。
	 
	今天给大家总结三点Go代码错误处理相关的最佳实践给大家。
	 
	这些最佳实践也是网上一些前辈分享的,我自己实践后在这里用自己的语言描述出来,希望能对大家有所帮助。
	 
	认识error
	Go程序通过error类型的值表示错误
	 
	error类型是一个内建接口类型,该接口只规定了一个返回字符串值的Error方法。
	 
	type error interface { 
	    Error() string 
	} 
	Go语言的函数经常会返回一个error值,调用者通过测试error值是否是nil来进行错误处理。
	 
	i, err := strconv.Atoi("42") 
	if err != nil { 
	    fmt.Printf("couldn't convert number: %vn", err) 
	    return 
	} 
	fmt.Println("Converted integer:", i) 
	error为nil时表示成功;非nil的error表示失败。
	 
	自定义错误记得要实现error接口
	我们经常会定义符合自己需要的错误类型,但是记住要让这些类型实现error接口,这样就不用在调用方的程序里引入额外的类型。
	 
	比如下面我们自己定义了myError这个类型,如果不实现error接口的话,调用者的代码中就会被myError这个类型侵入。比如下面的run函数,在定义返回值类型时,直接定义成error即可。                         (编辑:滁州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!  | 
                  


