tdf#42982: Improve UNO API error reporting

Change-Id: I16bd4bb935d02ff03422cb48d21a63e3d994d0b4
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/157993
Tested-by: Jenkins
Reviewed-by: Hossein <hossein@libreoffice.org>
diff --git a/unoxml/source/xpath/xpathapi.cxx b/unoxml/source/xpath/xpathapi.cxx
index 17b2802..a600839 100644
--- a/unoxml/source/xpath/xpathapi.cxx
+++ b/unoxml/source/xpath/xpathapi.cxx
@@ -110,7 +110,7 @@ namespace XPath
            nsmap_t & rNamespaces, Reference< XNode > const& xNamespaceNode)
    {
        DOM::CNode *const pCNode(dynamic_cast<DOM::CNode*>(xNamespaceNode.get()));
        if (!pCNode) { throw RuntimeException(); }
        if (!pCNode) { throw RuntimeException("Could not use the namespace node in order to collect namespace declarations."); }

        ::osl::MutexGuard const g(pCNode->GetOwnerDocument().GetMutex());

@@ -274,7 +274,7 @@ namespace XPath
            Reference< XNode > const& xContextNode,
            const OUString& expr)
    {
        if (!xContextNode.is()) { throw RuntimeException(); }
        if (!xContextNode.is()) { throw RuntimeException("xContextNode does not exist!"); }

        nsmap_t nsmap;
        extensions_t extensions;
@@ -288,15 +288,15 @@ namespace XPath
        // get the node and document
        ::rtl::Reference<DOM::CDocument> const pCDoc(
                dynamic_cast<DOM::CDocument*>(xContextNode->getOwnerDocument().get()));
        if (!pCDoc.is()) { throw RuntimeException(); }
        if (!pCDoc.is()) { throw RuntimeException("Interface pointer for the owner document of the xContextNode does not exist."); }

        DOM::CNode *const pCNode = dynamic_cast<DOM::CNode*>(xContextNode.get());
        if (!pCNode) { throw RuntimeException(); }
        if (!pCNode) { throw RuntimeException("xContextNode interface pointer does not exist."); }

        ::osl::MutexGuard const g(pCDoc->GetMutex()); // lock the document!

        xmlNodePtr const pNode = pCNode->GetNodePtr();
        if (!pNode) { throw RuntimeException(); }
        if (!pNode) { throw RuntimeException("Node pointer for xContextNode does not exist."); }
        xmlDocPtr pDoc = pNode->doc;

        /* NB: workaround for #i87252#:
@@ -376,7 +376,7 @@ namespace XPath
            Reference< XXPathExtension> const& xExtension)
    {
        if (!xExtension.is()) {
            throw RuntimeException();
            throw RuntimeException("Extension instance xExtension to be used by XPath does not exist.");
        }
        std::scoped_lock const g(m_Mutex);
        m_extensions.push_back( xExtension );