|
|
Go 的错误处理繁琐是一回事,更重要的是设计从根本上就是错误的。
result, err := foo()
一个函数是否发生错误只可能有两种情况,要么发生错误没有结果,要么不发生错误有结果。而 go 的设计直接给你来了个有无结果和有无错误的迪卡尔积,搞出来 4 种情况。
再有,如果你不去手动判断 err 是否为 nil ,则这个可能发生的错误就会直接被无时掉,意味着 go 的错误模型是默认无视掉所有错误。
这种用于错误处理设计不管出现在哪个语言里都是逆天的存在,与其说是错误处理,不如说它就是返回了个 tuple ,而实际上并不存在任何的错误处理机制。 |
|