Windows 7 64 SP1 MongoDB 2.2.0 C ++驱动程序 MSVS 2010
根据:
Double()
(和类似的函数)应该“抛出UserException
如果元素不是所需的类型。”
我的代码:
BSONObj a_document = BSON("a_string"<<"A string");
try
{
a_document["a_string"].Double();
}
catch(mongo::UserException ue)
{
cout << ue.toString() << endl;
}
但它没有被抓住。 Intead它断言:
Sun Dec 09 16:04:28 Assertion: 13111:wrong type for field (a_string) 2 != 1
Sun Dec 09 16:04:28 dev: lastError==0 won't report:wrong type for field (a_string) 2 != 1
我做错了什么?我想自己捕获并处理数据类型异常。
谢谢!
答案 0 :(得分:1)
通过查看文档和标题,我的感觉是此时文档不准确,或者使用了一些禁用MongoDB异常的选项。
请尝试以下代码:
BSONObj a_document = BSON("a_string"<<"A string");
try
{
a_document["a_string"].Double();
}
catch(mongo::UserException& ue)
{
cout << "UserException: " << ue.toString() << endl;
}
catch(mongo::MsgAssertionException& ex)
{
cout << "MsgAssertionException: " << ex.toString() << endl;
}
catch(mongo::DBException& ex)
{
cout << "DBException: " << ex.toString() << endl;
}
catch(std::exception& ex)
{
cout << "std::exception: " << ex.what() << endl;
}
查看实际抛出的异常(如果有的话)。