GOOGLE和CSDN上找了好久,也问了一些有开发经验的朋友,一直没能找到答案:开发环境:VC6.0, MFC, SOAP3.0
我写的一段调用第三方webservice代码在网络连接正常的时候应用完全没有问题。为了测试网络连接不稳定时,程序的表现,我拔掉网线再次执行该 webservice调用过程,结果在运行到Connector->EndMessage()的时候,报出 Microsoft C++ Exception,调用栈如下:
    MSVCRTD! _CxxThrowException@8 + 57 bytes
    _com_raise_error(long -2146822888, IErrorInfo * 0x003ed790) + 35 bytes
    _com_issue_errorex(long -2146822888, IUnknown * 0x003e6260, const _GUID & {IID_ISoapConnector}) + 93 bytes
    MSSOAPLib30::ISoapConnector::EndMessage() line 1741调用代码是很常规的VC下的SOAP开发代码:
Serializer->EndElement();
Serializer->EndBody();
Serializer->EndEnvelope();// Send the message to the XML Web service.
hr = Connector->EndMessage();
if (FAILED(hr))
{
delete pinfoQuery;
return 2;
}问题是:Connector->EndMessage()调用在网络故障或者数据错误的时候,是不是一定会导致程序异常?是否有办法规避这一问题?
我的目的只是要在出现这种情况时,所在线程中止,并且不影响主线程就可以。欢迎和感谢遇到过此类问题的朋友们帮忙!!
留下mail:[email protected]
再次感谢!