首页 > 后端开发 > Golang > 如何在 Go 中优雅地处理多个错误?

如何在 Go 中优雅地处理多个错误?

Mary-Kate Olsen
发布: 2024-12-18 21:07:13
原创
368 人浏览过

How Can I Handle Multiple Errors Gracefully in Go?

在 Go 中优雅地处理多个错误

在 Go 中,当处理大量潜在错误时,错误处理可能会变得乏味。例如,考虑以下代码:

aJson, err1 := json.Marshal(a)
bJson, err2 := json.Marshal(b)
cJson, err3 := json.Marshal(c)
dJson, err4 := json.Marshal(d)
eJson, err5 := json.Marshal(e)
fJson, err6 := json.Marshal(f)
gJson, err4 := json.Marshal(g)

if err1 != nil {
    return err1
} else if err2 != nil {
    return err2
} else if err3 != nil {
    return err3
} else if err4 != nil {
    return err4
} else if err5 != nil {
    return err5
} else if err5 != nil {
    return err5
} else if err6 != nil {
    return err6
} 
登录后复制

此代码的错误处理高度重复且难以维护。一种更干净、更高效的方法是使用闭包一次处理所有错误:

var err error
f := func(dest *D, src S) bool {
    *dest, err = json.Marshal(src)
    return err == nil
} // EDIT: removed ()

f(&aJson, a) &&
    f(&bJson, b) &&
    f(&cJson, c) &&
    f(&dJson, d) &&
    f(&eJson, e) &&
    f(&fJson, f) &&
    f(&gJson, g)
return err
登录后复制

这个函数指针 f 封装了错误处理逻辑,并通过链接调用并返回第一个非函数来简化主函数。 -nil 遇到错误。通过实施这种技术,您可以实现更简洁、更优雅的错误处理。

以上是如何在 Go 中优雅地处理多个错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板