MSXML2 :: IXMLDOMNodePtr C ++异常

时间:2014-10-24 21:47:28

标签: c++ com

我在MSDN website注意到它使用了catch all exception handler。即:

try {
    MSXML2::IXMLDOMDocumentPtr docPtr;
    MSXML2::IXMLDOMNodePtr DOMNodePtr;

    // init
    TESTHR(CoInitialize(NULL)); 
    TESTHR(docPtr.CreateInstance("Msxml2.DOMDocument.6.0"));

    VARIANT vtTemp;

    vtTemp.vt=VT_I2;
    vtTemp.iVal = 1; //NODE_ELEMENT
    // load a document
    _variant_t varXml("c:\\Temp\\books.xml");
    _variant_t varOut((bool)TRUE);
    varOut = docPtr->load(varXml);
    if ((bool)varOut == FALSE)
        throw(0);
    MessageBox(NULL, _bstr_t(docPtr->xml), _T("Original Document"), MB_OK);
    DOMNodePtr = docPtr->createNode(vtTemp, "VIDEOS", "");
    docPtr->documentElement->appendChild(DOMNodePtr);
    MessageBox(NULL, _bstr_t(docPtr->xml), _T("New Document"), MB_OK);

} catch(...)
{
    MessageBox(NULL, _T("Exception occurred"), _T("Error"), MB_OK);
}

现在我的问题是,函数调用MSXML2::IXMLDOMDocumentPtr对象是否抛出任何异常?由于COM边界可以与任何语言接口,我不知道COM对象可能抛出C ++异常。

如果只是抓住throw(0),为什么不赶上int?我对COM有一点了解,但我的知识有点受限。

0 个答案:

没有答案