我刚刚开始使用Go.我的代码开始有很多这样的:
if err != nil {
//handle err
}
Run Code Online (Sandbox Code Playgroud)
或这个
if err := rows.Scan(&some_column); err != nil {
//handle err
}
Run Code Online (Sandbox Code Playgroud)
在Go中检查和处理错误是否有一些很好的习语/策略/最佳实践?
编辑澄清:我不是在追逐或暗示Go团队想出更好的东西.我问的是我做得对,还是我错过了社区提出的一些技巧.谢谢大家.
我想知道什么是在go中处理多级抽象错误的最佳方法.每次如果我必须在程序中添加新的级别抽象,我就不得不将错误代码从级别转移到级别高.因此是日志文件中的重复社区或我必须重新删除通信表单级别并将其转移到更高级别.以下简单示例.我跳过创建每个对象更快和celar代码,但我认为你了解我的问题
type ObjectOne struct{
someValue int
}
func (o* ObjectOne)CheckValue()error{
if o.someValue == 0 {
SomeLogger.Printf("Value is 0 error program") // communicate form first level abstraction to logger
return errors.New("Internal value in object is 0")
}
return nil
}
type ObjectTwoHigherLevel struct{
objectOne ObjectOne
}
func (oT* ObjectTwoHigherLevel)CheckObjectOneIsReady() error{
if err := oT.objectOne.CheckValue() ; err != nil{
SomeLogger.Printf("Value in objectOne is not correct for objectTwo %s" , err) // second communicate
return err
}
return nil
}
type …Run Code Online (Sandbox Code Playgroud)