golang 的错误处理真的很糟糕

202 天前
 yaott2020

一直用 golang ,一直有人吐槽 golang 错误处理很繁琐,一开始觉得还好,直到遇见了 rust 。不得不说 rust 错误处理真的很优雅。写了一段时间 rust 反过来写 golang ,繁琐感瞬间就出来了

4079 次点击
所在节点    Go 编程语言
33 条回复
equationzhao
202 天前
确实,看过 rust 就觉得 go 的 err 有点...
Goooooos
202 天前
我见过吐槽 go 的 err 的,下都都会用 java 来反驳,来证明 go 的 err 是最优雅的
learningman
202 天前
Box<dyn Error> 一把梭是吧

其实 go 里你是能实现 rust 风格的 error 处理的,pattern matching 不好整,.unwrap 啥的你可以 replace error 搞
atVoid
202 天前
https://github.com/morrisxyang/errors, 这里实现了 wrap, unwrap 等常见能力, 添加了错误码和堆栈的支持.
rust 的 pattern matching 可以给我一些 example 和资料吗? 我看看是否可以添加.
@yaott2020
thevita
202 天前
现在 go 错误处理比刚出来的时候好多了,繁琐是有点,但是没啥心智负担(对写应用来说),只是和 rust 比起来显得有点草率,基本和 rust 无脑 anyhow::Error 一样
unnamedhao
202 天前
if err != nil
cyp0633
201 天前
感觉,rust>go>其他绝大部分 try-catch
studyrun
201 天前
大道至简 警告[滑稽]
fdwjtz
201 天前
接触 go 之前一直写 c ,go 这种错误处理方式倒觉得挺适应的
herozzm
201 天前
try-catch 比 go 的 error 更恶心
pursuer
201 天前
try-catch 多被用于异常处理,控制流来说是快速返回调用栈的作用(stack unwinding),C 里也有类似的 setjmp,longjmp 机制。
而 go 里 error 是多返回值,绝大多数语言其实也都可以实现类似的方案。
fenglangjuxu
201 天前
@herozzm 同意 java 到处充斥这个 try catch 一层套一层
bli22ard
201 天前
golang 的很糟糕,rust 比 golang 好在哪里?
abcdexx
201 天前
我们 go 语言错误处理就是这样子的 (#^.^#)
trzzzz
201 天前
golang 官方解释说:异常也被认为是一种返回值类型
kingbill
201 天前
Java 的 try catch 不是能在最外层统一处理吗?我感觉这样挺省事的啊,反而是 go 每一层都要 if err != nil 感觉很啰唆
PTLin
201 天前
月经贴了属于是
Winrey
201 天前
个人觉得 java 的报错摆烂处理方便些; golang 精确处理方便些

rust 怎么都方便
yaott2020
201 天前
@trzzzz 意思是直接 panic 抛出然后拿个 defer recover 统一处理?
yaott2020
201 天前
@atVoid rust 主要是有个 Result 枚举类型,以及语法糖'?',再加上一些 map_err unwrap_or 函数之类的,go 能做吗?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/984207

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX