原文链接:[ On | No ] syntactic support for error handling关于 Go 语言最有争论的就是错误处理:1234x, err := call()iferr !=nil{// handle err}if err != nil类似于这样的代码非常多,淹没了其余真正有用的代码。这通常发生在进行大量API调用的代码中,其中错误处理很普遍,只是简单地返回错误,有些最终的代码看起来像这样:123456789101112funcprintSum(a, bstring)error{x, err := strconv.Atoi(a)iferr !=nil{returnerr}y, err := strconv.Atoi(b)iferr !=nil{returnerr}fmt.Println("result:", x + y)returnnil}在这个函数的十行代码中,只有四行看起来是有实际的作用。其余六行看起来甚至会影响主要的逻辑。所以关于错误处理的抱怨多年来一直位居我们年度用户调查的榜首也就不足为奇了。(有一段时间,缺乏泛型支持超过了对错误处理的抱怨,但现在 Go 已经支持泛型了,错误处理又回到了榜首。)Go团队认真对待社区反馈,因此多年来我们一直在尝试为这个问题找到解决方案,
...
继续阅读
(21)