抛出CInternetException错误12029。

问题描述 投票:1回答:2

这与我之前的问题有些联系。背景细节在这里。简单的HTTP请求与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
    }

我是不是遗漏了什么!?

c++ exception exception-handling connection openurl
2个回答
1
投票

试着用另一种方法用'连接'手动连接到该IP地址。如果你能连接到它,那么openURL就不会抛出异常,因为你已经测试过你能用我刚才提到的另一个函数连接到它。

你是否也可以考虑在你的代码中寻找,以确保异常没有在其他地方被抛出?


0
投票

我想你应该用CInternetException*来代替。因为所有的MFC异常都是以指针的形式抛出的。

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

© www.soinside.com 2019 - 2024. All rights reserved.