通常在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/ (编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|