V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
yuhangch
V2EX  ›  Go 编程语言

来了来了, go 使用 try 来异常处理的实验性小工具

  •  
  •   yuhangch ·
    yuhangch · 2022-01-12 09:09:24 +08:00 · 3952 次点击
    这是一个创建于 1082 天前的主题,其中的信息可能已经有所发展或是发生改变。

    https://github.com/ez4o/go-ez

    看起来怪怪的

    24 条回复    2022-01-19 12:48:10 +08:00
    abersheeran
        1
    abersheeran  
       2022-01-12 09:27:22 +08:00
    确实有点怪……主要 Golang 风格不这样,乍一看不太适应😂
    Wenco
        2
    Wenco  
       2022-01-12 09:32:12 +08:00
    每行都 Try ,这跟 if err 比到底方便在哪里==
    fgwmlhdkkkw
        3
    fgwmlhdkkkw  
       2022-01-12 09:36:06 +08:00
    这不是更🤢……
    kiripeng
        4
    kiripeng  
       2022-01-12 09:46:01 +08:00
    写完一分钟 debug2 小时,交接半天
    richangfan
        5
    richangfan  
       2022-01-12 09:52:01 +08:00
    忘了 try...catch...吧
    wellsc
        6
    wellsc  
       2022-01-12 10:02:48 +08:00
    alias try{} catch{} = if err != nil{}
    fregie
        7
    fregie  
       2022-01-12 10:03:55 +08:00
    看到这个甚至想破口大骂,并不是说 try catch 一定不好,为啥不直接用支持的语言呢?
    SingeeKing
        8
    SingeeKing  
       2022-01-12 10:06:55 +08:00
    看完后唯一的感觉:这是什么鬼
    sujin190
        9
    sujin190  
       2022-01-12 10:08:44 +08:00
    其实既然这么纠结于 err 这个问题,以其做这种更丑陋的方案,为啥不更进一步,直接用 panic 加 recover 的逻辑做一个 try...catch 就是了啊,反正 golang 自己就能操作自己的底层内存栈堆,panic 加 recover 本来也实现好了调用栈回收的过程,汇编编写个函数,调整一下 try 位置生成的汇编代码应该是可以实现的吧,仅猜测,不知有没有大神研究过这个问题
    Kilerd
        10
    Kilerd  
       2022-01-12 10:09:28 +08:00
    这时候才显示出 Rust 的 Try trait 和 ? 语法的强大性。不然总有人觉得 go 加上泛型就能再次吊打 Rust 。
    Reficul
        11
    Reficul  
       2022-01-12 10:34:14 +08:00
    然后出啥问题栈都在最后的 Do 里
    zoharSoul
        12
    zoharSoul  
       2022-01-12 10:42:23 +08:00
    这个有点像 rust, 不太像 try catch
    littlewing
        13
    littlewing  
       2022-01-12 10:48:54 +08:00
    并不喜欢 try cache ,if err 挺好的啊,写 c++也从来不用 try cache
    Zwying
        14
    Zwying  
       2022-01-12 10:57:41 +08:00
    我选择 if err
    buzz2d0
        15
    buzz2d0  
       2022-01-12 11:04:50 +08:00
    好家伙,不如直接写 if err 了呀
    XTTX
        16
    XTTX  
       2022-01-12 11:05:25 +08:00   ❤️ 1
    还是牺牲了 readability, 换回来 syntax sugar 和把一堆不相关的 func 生硬地连起来
    coosir
        17
    coosir  
       2022-01-12 11:06:32 +08:00
    @littlewing 可以看出来,你确实不太写 try catch
    XTTX
        18
    XTTX  
       2022-01-12 11:08:52 +08:00
    如果真的那么喜欢 try catch ,干嘛不直接用 js 写后台就好了。err 类型多,最好还是用 switch.
    Mohanson
        19
    Mohanson  
       2022-01-12 11:09:17 +08:00
    ly020044
        20
    ly020044  
       2022-01-12 13:20:58 +08:00
    这样写我感觉会疯掉
    kindjeff
        21
    kindjeff  
       2022-01-12 14:11:08 +08:00
    有点像 reddit 上一个尝试用 go 泛型写链式 future promise 语法和回调的项目,被群嘲
    Kisesy
        22
    Kisesy  
       2022-01-12 14:35:55 +08:00
    感觉有点像依赖注入
    amwyyyy
        23
    amwyyyy  
       2022-01-12 14:36:31 +08:00
    接手的同事:wdnmd
    Pengxiguaa
        24
    Pengxiguaa  
       2022-01-19 12:48:10 +08:00
    楼主似乎是改了库名,https://github.com/ez4o/go-try
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2155 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 01:27 · PVG 09:27 · LAX 17:27 · JFK 20:27
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.