本文介绍: 在比较一段长的时间里,Go错误处理已经没有什么特别的进展和新改进了。看着已经到了瓶颈期。今天在 GitHub学习时,看到 Go 社区里有人提了个错误处理优化提案proposal: Go 2: Error-Handling Paradigm with!err Grammar Sugar》,也是引入新的语法解决问题大家一起来看看,也集思广益一下。原提案作者的目的是新增一个 listen 关键字和配合管道符等语法实现新的错误处理

比较一段长的时间里,Go错误处理已经没有什么特别的进展和新改进了。看着已经到了瓶颈期。

今天在 GitHub学习时,看到 Go 社区里有人提了个错误处理优化提案proposal: Go 2: Error-Handling Paradigm with !err Grammar Sugar》,也是引入新的语法解决问题

大家一起来看看,也集思广益一下。原提案作者的目的是新增一个 listen 关键字和配合管道符等语法实现新的错误处理

原本的 Go1 代码我们处理错误需要使用 if err != nil如下代码

func copy(src, dst string) (int64, error) {
    r, err := os.Open("input.txt")
    if err != nil {
        return 0, err
    }
    defer r.Close()
 
    w, err := os.Create("output.txt")
    if err != nil {
        return 0, err
    }
    defer w.Close()
    
    if _, err = io.Copy(w, r); err != nil {
        return 0, err
    }
    return 0, err
}

提案的变化是:新增一个 listen 关键字用于监听 err 变量,再配合 “|” 管道符来实现新的错误处理机制

如下演示代码

listen: err {
    if err != nil  {
        return 0, err
    }
    return 0, nil
}()

func copy(src, dst string) (int64, error) {
    listen:
    
    r, err := os.Open("input.txt")
    defer r.Close()
 
    w, err := os.Create("output.txt")
    defer w.Close()

    _, err = io.Copy(w, r) 
}

listen 关键字监听了 err 变量,再在上述的代码块中进行统一错误逻辑处理。

如果是多个 err 变量,会是如下处理方式

listen: err | err2 {
    if err != nil  {
        return 0, err
    }
    return 0, nil
}()

增加了管道符,同时对 err 和 err2 变量进行监听和处理。

提案还在等待作者补充更多的语言变更的实现细节。不过截至目前为止,吐槽是不少的。

大家对此有没有更好建议和想法呢?

Go 的新错误处理的改造方向真的是让人头大。我这边有记载被 ban 的错误处理合集都已经有许多了。停滞不前中。

拓展详谈

作为一组数字技术工具平台,能基于图形化拖拽参数配置等更为高效的方式,实现快速构建数据编排连接生态、中台服务等。通过少量代码或不用代码实现数字化转型中的场景应用创新。它能缓解甚至解决庞大的市场需求传统开发生产力引发的供需关系矛盾问题,是数字化转型过程中降本增效趋势下的产物。

一般而言,小的需求可以选择代码平台;高度复杂核心企业系统建议选择企业级低代码开发平台(比如 JNPF 快速开发平台)。

JNPF 快速发平台采用的是前后分离框架(SpringBoot+Mybatisplus+Ant-Design+Vue3)。代码生成依赖性低,灵活的扩展能力,可灵活实现二次开发。它预置大量开箱即用的功能,提供了用户友好的开放接口可以轻松与各种构建工具和 IDE 集成。还支持插件自定义规则,使得开发人员可以根据项目的特定需求标准对其进行定制配置

应用体验www.jnpfsoft.com?csdn ,可自行尝试

通过它,编码薄弱的 IT 人士也能自己搭建个性化的管理应用,降低技术门槛。开发者仅需少量代码或无需代码就可以开发出各类应用管理系统,由于多数采用组件封装的接口进行开发,使得开发效率大幅提升。

原文地址:https://blog.csdn.net/fefdfg/article/details/134735344

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_29356.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注