猿问

Golang mgo 错误

可以MGO比QueryError或ErrNotFound返回错误有什么不同?数据库连接错误怎么办?

在与 ErrNotFound 不同的错误上恐慌并在 http 处理程序堆栈的顶部恢复状态 500 的漂亮响应是一个好习惯吗?


jeck猫
浏览 241回答 2
2回答

largeQ

mgo 返回的错误集不受限制,因为它在下面执行了许多操作,这些操作也可能返回错误(DNS 解析、连接建立、超时等)。因此,使用 mgo 处理错误的正确方法与大多数地方相同:处理您知道并具有自定义逻辑的错误,并避免那些您不知道的错误。好的救助包括撤消任何本地副作用(关闭/删除本地创建的文件等),然后将错误返回给调用者,可能用自定义上下文信息装饰或包装。我不会对此类错误感到恐慌。恐慌通常是因为异常情况,例如,当开发人员对 API 做错了,或者环境受到严重破坏,最好的行动方案是完全停止,例如。与数据库(或相关的任何网络)的连接应有望在一段时间跌下来每一次,处理恰当,而不是仅仅记录的无法区分崩溃。如果您有更多详细信息并想进一步讨论,请访问邮件列表。

慕哥9229398

我相信您可以使用LastError. 大多数错误返回函数返回一个标准的Go 错误,应该在函数返回时检查。通常,在 Go 中,在诉诸恐慌/恢复之前,您需要一些非常特殊的用例。最好的做法是在错误出现时进行处理。欲了解更多信息请参见错误处理和围棋和推迟,恐慌,恢复从转到博客。
随时随地看视频慕课网APP

相关分类

Go
我要回答