据说 Go 2.0 的错误处理有可能是这个样子

2022-01-22 11:05:44 +08:00
 SuperMild
func foobar(a, b int) error {
    handle err { return err } // This is our handler
    x := check foo(a, b) // check invokes the handle func
    y := check bar(a, b) // this on as well
}

看起来还蛮好的。

来源: https://levelup.gitconnected.com/golang-2-0-draft-feature-error-handling-c0a2332b9162

但我觉得还能改进,比如把 handle err { return err } 当作默认行为,不需要写这句就是这个行为,如果写了就覆盖默认行为。

5906 次点击
所在节点    Go 编程语言
44 条回复
SuperMild
2022-01-22 19:06:49 +08:00
@ZSeptember 啊,对哦!等泛型来了我就用这招。
sagaxu
2022-01-22 21:19:37 +08:00
@iseki

举个例子,根据用户名查找用户帐号, 查无此人是正常逻辑,符合预期,一点也不 exception 。
某个订单里的用户 ID ,根据 ID 查找用户帐号,查无此人是 exception ,正常逻辑不应该走到这一步。

前面那个接口抛 UserNotFoundException 是滥用,后面那个合适。
iseki
2022-01-23 03:18:44 +08:00
@sagaxu 哈哈哈,我到觉得既然是查找,那没有就是正常的,返回空就 OK 了。不过如果那个函数叫“修改用户信息”,这时候报用户找不到异常就是很合理的了~~~
Hellert
2022-01-23 03:38:58 +08:00
x:=getx()?

还是问号更自然。

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

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

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

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

© 2021 V2EX