非引战,一直想不明白 golang 的错误处理和其他语言的 try{}catch{}有什么区别。。。

2021-03-04 19:11:34 +08:00
 zxCoder

经常看到针对这个问题的争论很多,有人特别喜欢这个处理方式,有人特别不喜欢

但是!!!我一直不能理解两者深层的不同之处。。。。是需要写比较复杂的程序才能体现出来吗?

golang 不就是把错误 /异常返回到上层函数调用处吗

try catch 不也是在上层函数调用处去捕获这个异常 /错误吗

两者到底有什么大区别,一直想不明白,有大佬可以简明扼要地解释一波吗

1257 次点击
所在节点    问与答
9 条回复
emSaVya
2021-03-04 19:18:47 +08:00
两种错误处理机制 建议搜索了解 EAFP/LBYL
imkerberos
2021-03-04 19:22:41 +08:00
如果你调用 10 层,你觉得判断 10 层省事还是 try 一次省事?
wangsongyan
2021-03-04 19:42:52 +08:00
我觉得 try/catch 类比 panic/recover 更好些
ysc3839
2021-03-04 19:56:53 +08:00
try catch 有 stack unwinding 的功能。return error 没有,只能返回上一层,不能一直回溯。
liuxey
2021-03-04 20:10:02 +08:00
就是因为 try/catch 太方便了,Java 中无论你的 call stack 多深,一把 catch 完事
这两种没有绝对的好坏,如果是非分明就不会有争论
sorcerer
2021-03-04 20:16:32 +08:00
@liuxey 请问这是什么软件
cmdOptionKana
2021-03-04 20:22:41 +08:00
没啥深层区别,只是风格不同,各有优劣。
liuxey
2021-03-05 22:51:44 +08:00
@sorcerer #6 这是多年前网上嘲讽 Java 的老图了,看着像拼出来的,所以我也不知道
sorcerer
2021-03-06 11:01:26 +08:00
@liuxey 哈哈 好吧

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

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

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

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

© 2021 V2EX