学灬而无涯 2018-09-01 01:45 采纳率: 100%
浏览 999
已采纳

c++ 驱动操作 Mongodb 查询超时异常如何捕获?

代码如下:

 try
    {
        mongo::DBClientConnection * conn = new DBClientConnection(true, 0, 3);
        if(!conn->isFailed())
        {
            cout<<"-false"<<" type:"<< conn->type()<<endl; 
        }
        else
            cout<<"-true"<<" type:"<< conn->type()<<endl; 
        //初始化连接
        MongoDB_Connect(&conn);

        if(conn->isFailed())
        {
            cout<<"1:连接失败!"<<" type:"<< conn->type()<<endl; 
        }
        else
            cout<<"2:连接成功!"<< conn->toString()<<" type:"<< conn->type()<<endl; 
        BSONArrayBuilder c;
        BSONObjBuilder add,A,B;
        int falg = 401;
        B.append("trans_sub_typecode",falg);
        B.append("discouant_money","0");
        B.append("account_money","0");
        B.append("proxy_money","0");
        c.append("0");
        c.append("0.00");
        B.append("trans_amount",BSON("$nin"<<c.arr()));
        auto_ptr<DBClientCursor> cursor;
        Query query(B.obj());
        try
        {
            cursor = conn->query("e_invoice.issue_park_transactions",query);

        }
        catch (mongo::AssertionException &e1)
        {
            printf("0:捕获异常: %s\n", e1.what());
        }
        catch (mongo::SocketException &e1)
        {
            printf("1:捕获异常: %s\n", e1.what());
        }
        catch (mongo::DBException &e1)
        {
            printf("2:捕获异常: %s\n", e1.what());
        }
        catch (mongo::exception &e1)
        {
            printf("02:捕获异常: %s\n", e1.what());
        }
        catch (...)
        {
            printf("查询失败 数据库数据异常\n");
        }
        if(cursor.get() == NULL)
        {
            cout<<"--返回为NULL:"<< conn->type()<<endl;  
        }

        if(conn->isFailed())
        {
            cout<<"2:连接失败!"<<" type:"<< conn->type()<<endl; 
        }
        else
            cout<<"2:连接成功!"<< conn->toString()<<" type:"<< conn->type()<<endl; 
    }
    catch (mongo::SocketException &e1)
    {
        printf("3:捕获异常: %s\n", e1.what());
    }
    catch (mongo::DBException &e1)
    {
        printf("3:捕获异常: %s\n", e1.what());
    }
    catch (...)
    {
        printf("3:查询失败 数据库数据异常\n");
    }

执行结果:
图片说明

我想要获取这段异常,有人有了解么?

  • 写回答

1条回答 默认 最新

  • knold 2018-09-01 13:50
    关注

    代码第4行 if( ! conn->isFailed()) 应去掉'!', 即改为:
    if( conn->isFailed())
    这样与执行结果图中第一处红线在逻辑上匹配。

    另外try...catch用法可以深入了解下,
    可参考https://www.cnblogs.com/MrYuan/p/4800257.html
    祝好运!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已采纳回答 7月15日

悬赏问题

  • ¥100 c语言,请帮蒟蒻看一个题
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)