From f13e1fa9a41006d80e6923489414cfdc2fcadd08 Mon Sep 17 00:00:00 2001 From: Adrian Kummerländer Date: Sun, 8 Jun 2014 16:49:41 +0200 Subject: Handling xercesc::DOMException in "read-xml-file" and "external-text-formatter" * external DOM may cause xercesc::DOMException's to be thrown instead of passing all errors to the custom error handlers ** these exceptions are handled by this commit by setting the "result" attribute to "error" and adding "error" value nodes with further information --- src/function/read_xml_file.cc | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) (limited to 'src/function/read_xml_file.cc') diff --git a/src/function/read_xml_file.cc b/src/function/read_xml_file.cc index 65989b2..e4d256d 100644 --- a/src/function/read_xml_file.cc +++ b/src/function/read_xml_file.cc @@ -61,11 +61,21 @@ xercesc::DOMDocument* FunctionReadXmlFile::constructDocument( result.setAttribute("path", filePath.string()); if ( boost::filesystem::is_regular_file(filePath) ) { - result.setAttribute("result", "success"); + try { + result.setContent( + importDocumentElement(filePath.string(), domDocument) + ); - result.setContent( - importDocumentElement(filePath.string(), domDocument) - ); + result.setAttribute("result", "success"); + } + catch ( const xercesc::DOMException& exception ) { + result.setAttribute("result", "error"); + + result.setValueNode( + "error", + *XercesStringGuard(exception.msg) + ); + } } else { result.setAttribute("result", "error"); } -- cgit v1.2.3