Can mgo return error different than QueryError or ErrNotFound? What with database connection errors?
Is it a good practise to panic on error different than ErrNotFound and recover on the top of http handlers stack with something like pretty response with status 500?
mgo返回的错误集不受约束,因为它在下面执行了许多操作,也可能返回错误(DNS解析,连接建立,超时等).因此,使用mgo处理错误的正确方法与大多数地方相同:处理您所了解的并且具有自定义逻辑的方法,并对您没有的方法进行纾困.好的救助包括撤消任何本地副作用(关闭/删除本地创建的文件等),然后将错误返回给调用者,可能使用自定义上下文信息进行修饰或包装.
我不会对这些错误感到恐慌.恐慌通常是针对异常情况,例如,当开发人员对API出错时,或者环境严重受损时,最好的行动方法就是完全停止.与数据库(或相关的任何网络)的连接应预期到每过一段时间跌下来,并进行相应的处理,而不仅仅是登录的不可区分的崩溃.
如果您有更多详细信息并希望进一步讨论,请转到邮件列表.