加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

golang的错误处理

发布时间:2020-12-16 18:25:31 所属栏目:大数据 来源:网络整理
导读:通常在golang中使用错误处理都是这样做的: err := foo() if err != nil { return err } 但是如果该函数需要多次调用,那么每次调用都需要进行错误处理: var err error var param1,param2 int err = foo(param1) if err != nil { return err } err = foo(pa
                                                                                                     

通常在golang中使用错误处理都是这样做的:

err := foo()

if err != nil {

return err

}

但是如果该函数需要多次调用,那么每次调用都需要进行错误处理:

var err error

var param1,param2 int

err = foo(param1)

if err != nil {

return err

}

err = foo(param2)

if err != nil {

return err

}

但是其实有一种更为合理的处理是,先调用函数进行处理,最后在考虑错误。

比如:

var err error

f := func(param int) {

if err != nil {

return

}

err = foo(param)

}


foo(param1)

foo(param2)


if err != nil {

return err

}

当然,也可以封装在一个结构体中进行处理,这样就不必通过定义一个函数来处理,结果将更为清晰。


type errFooer struct {

err error

ffunc(int)

}


func (ef *errFooer) errFoo(param int) {

if ef.err != nil {

return

}


ef.err = ef.f(param)

}


这样使用的时候可以通过errFooer对象和errFoo方法进行操作:

foo := &errFooer{f: foo}

foo.errFoo(param1)

foo.errFoo(param2)

if foo.err != nil {

return

}

这是在go blog上看到的一篇文章,原文地址是:https://blog.golang.org/errors-are-values



查看原文:http://www.zoues.com/2016/10/20/golang%e7%9a%84%e9%94%99%e8%af%af%e5%a4%84%e7%90%86/

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读