golang的错误处理

                                                                                                     

通常在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

    f    func(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/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值