当前位置: 首页 > 面试题库 >

防止bson.ObjectIdHex中的运行时出现紧急情况

东门晟
2023-03-14
问题内容

我正在尝试使用mgo将objectid字符串转换为bson ObjectId格式,

errCheck := d.C("col").FindId(bson.ObjectIdHex(obid[0])).One(&Result)

idk为什么,但是如果我输入了错误/无效的输入字符串,我的应用程序就会出现运行时恐慌

我该如何预防呢?谢谢


问题答案:

bson.ObjectIdHex()
文档,如果您传递无效的对象ID将恐慌:

ObjectIdHex从提供的十六进制表示形式返回ObjectId。 以无效的十六进制表示形式调用此函数将导致运行时恐慌。
请参见IsObjectIdHex函数

如果要避免这种情况,请先使用来检查输入字符串bson.IsObjectIdHex(),然后仅bson.ObjectIdHex()在输入有效时才继续调用:

if bson.IsObjectIdHex(obid[0]) {
    // It's valid, calling bson.ObjectIdHex() will not panic...
}


 类似资料:
  • 问题内容: 我对golang相当陌生,并尝试使用chanel理解主要原理并编写基于古洛丁的代码。 在我使用的其他语言中,没有这样的工具,我不知道会出现这样的错误,例如恐慌… 我的代码: 但是在终端我得到了这个: 我如何确定问题出在哪里,如何很好地关闭古丁鱼,而不是将其留在流程中… ps原谅我我的菜鸟问题。请 问题答案: nil取消引用: 您正在尝试访问指针所引用的结构,但是该指针尚未设置为该结构的

  • 我试图在每台视窗2019服务器上运行4个Payara域(我也有几个在2016年运行)。我现在只能使用Payara5.1.9.1或5.1.9.4,因为我托管的这个特定应用程序的两个版本支持这两个。我每个域只部署了一个应用程序。 Payara域配置为视窗服务,设置为网络服务运行。我将两个生产域设置为立即启动,将两个测试域设置为使用视窗服务启动选项中的“延迟启动”启动。 在这种环境下,服务器计划每周日自

  • 本文向大家介绍destoon出现验证码不显示时的紧急处理方法,包括了destoon出现验证码不显示时的紧急处理方法的使用技巧和注意事项,需要的朋友参考一下 很多destoon开发人员都遇到过验证码不显示的情况,本文就来讲述一下遇到这种情况的紧急处理方法。具体如下: 如果你启用验证码以后,后台又登陆不了,取消不了。那么可以试试下面的办法: 找到module.php文件, 在3.0下为: cache/

  • 紧急联系人 基本描述 紧急联系人是乘车人在遇到紧急情况时向其发起帮助请求的人。设置紧急联系人时,可选择在特定时间段内开启自动行程分享功能。在该时段内,车辆位置和行程信息会通过短信自动分享给紧急联系人。在完成添加紧急联系人的情况下,乘车过程中乘车人如果触发紧急状态(如使用一键报警功能),系统会给乘客设置的所有紧急联系人发送短信,并在滴滴侧启动相应安全防护措施,最大程度地保护乘车人安全。紧急情况下,紧

  • 我正在尝试测试对 HTTP 服务器具有基础 GET 调用的代码。 我正在尝试使用WireMock,根据“入门指南”,我有以下代码: 运行测试时,我得到以下堆栈跟踪: 错误涉及端口8080,但我将端口配置为8888。我知道默认情况下WireMock以端口8080启动,因此这可能是其内部配置的问题。 这里有什么问题?

  • 我有一个引导弹出框,它在输入的