我正在尝试使用 mgo 将 objectid 字符串转换为 bson ObjectId 格式,
errCheck := d.C("col").FindId(bson.ObjectIdHex(obid[0])).One(&Result)
我不知道为什么,但如果我给出错误/无效的输入字符串,我的应用程序会出现运行时恐慌
我怎样才能防止这种情况发生?谢谢
bson.ObjectIdHex() https://godoc.org/github.com/globalsign/mgo/bson#ObjectIdHex文档表明,如果您传递无效的对象 ID,它将出现恐慌:
ObjectIdHex 从提供的十六进制表示形式返回一个 ObjectId。使用无效的十六进制表示调用此函数将导致运行时恐慌。请参阅 IsObjectIdHex 函数。
如果您想避免这种情况,请首先使用检查您的输入字符串bson.IsObjectIdHex() https://godoc.org/github.com/globalsign/mgo/bson#IsObjectIdHex,并且只继续调用bson.ObjectIdHex()
如果您的输入有效:
if bson.IsObjectIdHex(obid[0]) {
// It's valid, calling bson.ObjectIdHex() will not panic...
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)