【问题标题】:Throwing CInternetException for error 12029为错误 12029 引发 CInternetException
【发布时间】:2014-05-20 04:25:42
【问题描述】:

这有点链接到我之前的问题。背景细节在这里: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
    }

我在这里错过了什么吗!?

【问题讨论】:

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


    【解决方案1】:

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

    您是否也可以考虑查看您的代码以确保不会在其他地方抛出异常?

    【讨论】:

    • “连接”是什么意思?那是一个功能吗?你能展示一个例子或链接吗
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2013-07-11
      • 2010-10-23
      • 2015-09-12
      • 1970-01-01
      • 2016-01-26
      • 1970-01-01
      • 1970-01-01
      • 2020-07-12
      • 1970-01-01
      相关资源
      最近更新 更多