为错误12029抛出CInternetException

时间:2014-05-20 04:25:42

标签: c++ exception exception-handling connection openurl

这有点链接到我之前的问题。背景详情:Simple HTTP request with C++

基本上我通过带有C ++的URL将数据发送到服务器。我现在在CInternetSession类中使用openURL()函数来完成它。如果openURL成功连接到服务器,则不会引发任何错误或异常。但是,有时候,在Visual C ++ 2006的调试器中,我会得到这个弹出窗口

First-chance exception in myProg.exe (KERNELBASE.DLL): 
0xE06D7363: Microsoft C++ Exception.

我已将调试异常设置为“始终停止”,并在调试窗口中显示

Warning: throwing CInternetException for error 12029

另外,当我自己运行程序时(没有调试器和东西),我得到一个弹出窗口说调试错误。

我知道这是因为openURL()无法建立与指定URL的连接。但是,我现在的问题是我不希望弹出窗口通知我这一点。我在我的代码周围放了一个try catch块,但它仍然没有处理异常。这是代码

    try {
        // Open HTTP file
        pHttpFile =(CHttpFile *) mySession.OpenURL(test1.c_str());
    }
    catch (CInternetException) {
        printf("Received Exception from OpenURL()");
        // Handle exception
    }

我在这里错过了什么!?

2 个答案:

答案 0 :(得分:1)

尝试使用“connect”手动使用其他方法连接到该IP地址。如果你可以连接到它,那么openURL不会抛出异常,因为你已经测试过你可以用我刚才提到的其他函数连接到它。

您是否也可以考虑查看代码以确保异常不会被抛到别处?

答案 1 :(得分:1)

我认为您应该改为捕获CInternetException *。对于所有MFC异常,都将其作为指针抛出。

PS。 如果不需要再次抛出异常对象,还应该在catch块中使用CException :: Delete()删除刚刚捕获的异常对象。