这与我之前的问题有些联系。背景细节在这里。简单的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
}
我是不是遗漏了什么!?
试着用另一种方法用'连接'手动连接到该IP地址。如果你能连接到它,那么openURL就不会抛出异常,因为你已经测试过你能用我刚才提到的另一个函数连接到它。
你是否也可以考虑在你的代码中寻找,以确保异常没有在其他地方被抛出?
我想你应该用CInternetException*来代替。因为所有的MFC异常都是以指针的形式抛出的。
PS.你还应该在你的捕捉块中使用CException::Delete()来删除你刚刚捕捉到的异常对象,如果你不需要再次抛出它。