golang 的错误处理真的很糟糕

2023-10-22 12:00:01 +08:00
 yaott2020

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

4475 次点击
所在节点    Go 编程语言
33 条回复
yaott2020
2023-10-23 11:51:34 +08:00
@cyp0633 确实,相比 try-catch ,go 的错误处理相对好很多了,但比 rust 还是差一些
mmdsun
2023-10-23 13:04:22 +08:00
@fenglangjuxu
@herozzm

很多语言都是 try catch 那套吧? Java 主要是检查性异常必须捕获就很恶心了,但是现在也可以用 lombok 插件加个 @SneakyThrows
BBCCBB
2023-10-23 14:35:01 +08:00
go 的 if err != nil {} 比 java 的 try catch 难用多了.. 这玩意儿每个地方都要强制 if err!=nil {}一波

rust 的还可以. 毕竟可以? 直接往外面传播. 可以在最外层统一处理.
hancai
2023-10-23 16:34:05 +08:00
用习惯了,没感觉,配合 Copilot 就一个 tab 的事情
wei2629
2023-10-23 17:22:02 +08:00
是繁琐 但是 try-catch 怎么判断 到底错误在什么地方出现呢?难道随时打开堆栈信息吗?
littlewing
2023-10-23 19:12:39 +08:00
写 C 的表示没啥
hellodudu86
2023-10-23 21:00:32 +08:00
Do you guys not write c??
trzzzz
2023-10-24 08:30:18 +08:00
@yaott2020 不是啊 你就当异常是一个返回值。比如方法需要返回 int ,但方法里面处理可能会异常,那么你就在该方法加一个返回值变成 func method() (int, error)
anubis482
2023-10-24 09:40:10 +08:00
@BBCCBB ?出来的问题我记得是 panic ,在外层统一处理就和 try-catch 无异了,失去了 Result 的灵魂
BBCCBB
2023-10-24 10:04:37 +08:00
@anubis482 rust ? 是直接返回啊. Err 往上层传播

再灵魂也不能每个地方都去 match res {
ok -> xxx,
err -> xxx
}
darksword21
2023-10-24 10:20:52 +08:00
无感,基本还没写过 try catch 的语言,go 的这种就感觉挺符合直觉的,当然觉得应该还有改善空间。。
cp19890714
2023-10-24 10:27:13 +08:00
我觉得, return error 和 try catch 的应用场景有差异, 各有优势, 语言应该同时提供这两种, 由程序员自己决定用哪种.
atVoid
2023-10-25 21:23:28 +08:00
@yaott2020 让我来看一下,如果是泛型的话 或许可以

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

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

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

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

© 2021 V2EX