MongoDB C ++驱动程序没有抛出连接错误

时间:2012-01-09 23:57:45

标签: c++ exception mongodb exception-handling try-catch

这是我的代码 -

DBClientBase *conn = NULL;
string err_msg;
ConnectionString cs = ConnectionString::parse(connString, err_msg);

if (!cs.isValid()) {
   throw "bad: " + err_msg;
}

try {
  conn = cs.connect(err_msg);
}
catch (DBException &e) {
   cout << "caught " << err_msg << endl;
   return 1;
}

if (!conn) {
   cout << "Unable to connect to DB" << endl;
   return 1;
}

我希望MongoDB在DB无法访问的情况下抛出异常。但是,我发现if (!conn)越来越满意了。

为什么

catch (DBException &e) {
   cout << "caught " << err_msg << endl;
   return 1;
}

阻止无效?

1 个答案:

答案 0 :(得分:2)

the current trunk source开始,ConnectionString::connect似乎只在字符串本身无效时抛出异常(并且您已经知道它不是,来自您的第一个条件语句)。

它只返回一个NULL指针,并在所有其他情况下设置errMsg

在你的辩护中,我根本找不到任何记录; a very basic example of connect就是我所能找到的。

string err_msg;
ConnectionString cs = ConnectionString::parse(connString, err_msg);

if (!cs.isValid()) {
   throw "bad: " + err_msg;
}

DBClientBase* conn = cs.connect(err_msg);

if (!conn) {
   cout << "Unable to connect to DB: " << err_msg << endl;
   return 1;
}