这有点链接到我之前的问题。背景详情: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
}
我在这里错过了什么!?
答案 0 :(得分:1)
尝试使用“connect”手动使用其他方法连接到该IP地址。如果你可以连接到它,那么openURL不会抛出异常,因为你已经测试过你可以用我刚才提到的其他函数连接到它。
您是否也可以考虑查看代码以确保异常不会被抛到别处?
答案 1 :(得分:1)
我认为您应该改为捕获CInternetException *。对于所有MFC异常,都将其作为指针抛出。
PS。 如果不需要再次抛出异常对象,还应该在catch块中使用CException :: Delete()删除刚刚捕获的异常对象。