我正在尝试使用mgo将objectid字符串转换为bson ObjectId格式,
errCheck := d.C("col").FindId(bson.ObjectIdHex(obid[0])).One(&Result)
idk为什么,但是如果我输入了错误/无效的输入字符串,我的应用程序就会出现运行时恐慌
我该如何预防呢?谢谢
bson.ObjectIdHex() 文档,如果您传递无效的对象ID将恐慌:
bson.ObjectIdHex()
ObjectIdHex从提供的十六进制表示形式返回ObjectId。 以无效的十六进制表示形式调用此函数将导致运行时恐慌。 请参见IsObjectIdHex函数。
如果要避免这种情况,请先使用来检查输入字符串bson.IsObjectIdHex(),然后仅bson.ObjectIdHex()在输入有效时才继续调用:
bson.IsObjectIdHex()
if bson.IsObjectIdHex(obid[0]) { // It's valid, calling bson.ObjectIdHex() will not panic... }