21 条回复  ·  2270 次点击
lasuar 小成 昨天 15:50
改不过来习惯 ,不建议写 go ,难受自个。编程范式都不一样了。
zoharSoul 小成 昨天 15:56
@realpg #8 人家是 php 干嘛找 java 的 php 都是转 go 的
afxcn 小成 昨天 15:57
repository 返回正确的错误类型就好了。
Blackbelly 初学 昨天 16:21
直接 panic 因为数据库崩了属于 unrecoverable 的错误。这时候当成 err 向上抛没有意义,上一层也无法处理,只能层层往上抛。 而且,你的接口语义是 GetUser ,本身就不应该返回一个接口语义之外的错误。 按照接口语义,应该是返回一个 user ,或者是 NotFoundErr ,除此之外的错误都不应该返回。
chen11 初学 昨天 16:46
我上周才遇见个 bug ,go 程序直接崩溃,log 没打出来,找不到 bug 在哪里。习惯了 java ,来写 go 就难受
zsj950618 小成 昨天 16:47
> 被业务中间件拦截到了 返回 401 unauthorized 那是这个中间件垃圾,都不看错误类型就一股脑返回 401 。
chevalier 小成 昨天 17:09
从功能上来说 Go 的 error 相当于 Java 的异常 Go 的 panic 相当于 Java 的 Error
changz 初学 昨天 17:40
用 protobuf 定义错误码,一层一层往上抛
wangritian 小成 昨天 17:54
所有语言的最佳实践,都可以在流行框架内找到,推荐到 goframe 看看 go 一般是自己设计一个符合 error 接口(包含 Error 方法)的带 code 和 msg 的自定义 error 通过 recover 全局拦截异常,如果是底层报错(数据库连接失败等业务层无须接收),直接 panic 如果是业务异常(用户名重复),return 自定义 error
guanzhangzhang 初学 昨天 18:03
返回 error ,上层处理和家 warp 信息,最后到你接口层面你可以返回 500
返回顶部