为了账号安全,请及时绑定邮箱和手机立即绑定

Golang mgo 错误

Golang mgo 错误

Go
jeck猫 2021-06-28 13:43:35
可以MGO比QueryError或ErrNotFound返回错误有什么不同?数据库连接错误怎么办?在与 ErrNotFound 不同的错误上恐慌并在 http 处理程序堆栈的顶部恢复状态 500 的漂亮响应是一个好习惯吗?
查看完整描述

2 回答

?
largeQ

TA贡献2039条经验 获得超7个赞

mgo 返回的错误集不受限制,因为它在下面执行了许多操作,这些操作也可能返回错误(DNS 解析、连接建立、超时等)。因此,使用 mgo 处理错误的正确方法与大多数地方相同:处理您知道并具有自定义逻辑的错误,并避免那些您不知道的错误。好的救助包括撤消任何本地副作用(关闭/删除本地创建的文件等),然后将错误返回给调用者,可能用自定义上下文信息装饰或包装。

我不会对此类错误感到恐慌。恐慌通常是因为异常情况,例如,当开发人员对 API 做错了,或者环境受到严重破坏,最好的行动方案是完全停止,例如。与数据库(或相关的任何网络)的连接应有望在一段时间跌下来每一次,处理恰当,而不是仅仅记录的无法区分崩溃。

如果您有更多详细信息并想进一步讨论,请访问邮件列表。


查看完整回答
反对 回复 2021-07-05
?
慕哥9229398

TA贡献1877条经验 获得超6个赞

我相信您可以使用LastError. 大多数错误返回函数返回一个标准的Go 错误,应该在函数返回时检查。

通常,在 Go 中,在诉诸恐慌/恢复之前,您需要一些非常特殊的用例。最好的做法是在错误出现时进行处理。

欲了解更多信息请参见错误处理和围棋推迟,恐慌,恢复转到博客


查看完整回答
反对 回复 2021-07-05
  • 2 回答
  • 0 关注
  • 240 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信