一直用 golang ,一直有人吐槽 golang 错误处理很繁琐,一开始觉得还好,直到遇见了 rust 。不得不说 rust 错误处理真的很优雅。写了一段时间 rust 反过来写 golang ,繁琐感瞬间就出来了
一直用 golang ,一直有人吐槽 golang 错误处理很繁琐,一开始觉得还好,直到遇见了 rust 。不得不说 rust 错误处理真的很优雅。写了一段时间 rust 反过来写 golang ,繁琐感瞬间就出来了
|
equationzhaoOct 22, 2023
1
确实,看过 rust 就觉得 go 的 err 有点...
|
|
SezxyOct 22, 2023 via Android
2
我见过吐槽 go 的 err 的,下都都会用 java 来反驳,来证明 go 的 err 是最优雅的
|
|
learningmanOct 22, 2023
3
Box<dyn Error> 一把梭是吧
其实 go 里你是能实现 rust 风格的 error 处理的,pattern matching 不好整,.unwrap 啥的你可以 replace error 搞 |
|
atVoidOct 22, 2023
4
https://github.com/morrisxyang/errors, 这里实现了 wrap, unwrap 等常见能力, 添加了错误码和堆栈的支持.
rust 的 pattern matching 可以给我一些 example 和资料吗? 我看看是否可以添加. @yaott2020 |
|
thevitaOct 22, 2023
5
现在 go 错误处理比刚出来的时候好多了,繁琐是有点,但是没啥心智负担(对写应用来说),只是和 rust 比起来显得有点草率,基本和 rust 无脑 anyhow::Error 一样
|
|
unnamedhaoOct 22, 2023
6
if err != nil
|
|
7
感觉,rust>go>其他绝大部分 try-catch
|
|
studyrunOct 23, 2023
8
大道至简 警告[滑稽]
|
|
fdwjtzOct 23, 2023
9
接触 go 之前一直写 c ,go 这种错误处理方式倒觉得挺适应的
|
|
herozzmOct 23, 2023
10
try-catch 比 go 的 error 更恶心
|
|
pursuerOct 23, 2023
11
try-catch 多被用于异常处理,控制流来说是快速返回调用栈的作用(stack unwinding),C 里也有类似的 setjmp,longjmp 机制。
而 go 里 error 是多返回值,绝大多数语言其实也都可以实现类似的方案。 |
|
bli22ardOct 23, 2023
13
golang 的很糟糕,rust 比 golang 好在哪里?
|
|
abcdexxOct 23, 2023
14
我们 go 语言错误处理就是这样子的 (#^.^#)
|
|
trzzzzOct 23, 2023
15
golang 官方解释说:异常也被认为是一种返回值类型
|
|
kingbillOct 23, 2023
16
Java 的 try catch 不是能在最外层统一处理吗?我感觉这样挺省事的啊,反而是 go 每一层都要 if err != nil 感觉很啰唆
|
|
PTLinOct 23, 2023
17
月经贴了属于是
|
|
WinreyOct 23, 2023
18
个人觉得 java 的报错摆烂处理方便些; golang 精确处理方便些
rust 怎么都方便 |
|
20
@atVoid rust 主要是有个 Result 枚举类型,以及语法糖'?',再加上一些 map_err unwrap_or 函数之类的,go 能做吗?
|
|
mmdsunOct 23, 2023 via iPhone
22
@fenglangjuxu
@herozzm 很多语言都是 try catch 那套吧? Java 主要是检查性异常必须捕获就很恶心了,但是现在也可以用 lombok 插件加个 @SneakyThrows |
|
BBCCBBOct 23, 2023
23
|
|
hancaiOct 23, 2023
24
用习惯了,没感觉,配合 Copilot 就一个 tab 的事情
|
|
wei2629Oct 23, 2023
25
是繁琐 但是 try-catch 怎么判断 到底错误在什么地方出现呢?难道随时打开堆栈信息吗?
|
|
littlewingOct 23, 2023
26
写 C 的表示没啥
|
|
hellodudu86Oct 23, 2023
27
Do you guys not write c??
|
|
trzzzzOct 24, 2023 via iPhone
28
@yaott2020 不是啊 你就当异常是一个返回值。比如方法需要返回 int ,但方法里面处理可能会异常,那么你就在该方法加一个返回值变成 func method() (int, error)
|
|
BBCCBBOct 24, 2023
30
|
|
darksword21Oct 24, 2023
31
无感,基本还没写过 try catch 的语言,go 的这种就感觉挺符合直觉的,当然觉得应该还有改善空间。。
|
|
cp19890714Oct 24, 2023
32
我觉得, return error 和 try catch 的应用场景有差异, 各有优势, 语言应该同时提供这两种, 由程序员自己决定用哪种.
|