You might want to start by trapping all the exceptions that parse() can generate. DOMException, OutOfMemoryException, and (I think) SAXException are all possibilities that you haven't covered. Using the getMessage() member to display the exception message may well be revealing.
Personally, I'd think twice before implementing a constructor that does so much work. Handling exceptions properly in constructors is notoriously difficult, and this one is rife with opportunities for error. -----Original Message----- From: appleGuy [mailto:[EMAIL PROTECTED] Sent: Wednesday, December 20, 2006 12:05 PM To: [email protected] Subject: Error In Code (Sax Parsing) Hi, My program generates a runtime error...I went through the debugger & it seems to break at the parser->parse(XMLfile) The error is: Debug Error!....this application has requested the runtime to terminate in an unusual way The code with problems: #include "prjLoad.h" //DEBUG #include <iostream> using namespace std; //Default Constructor prjLoad::prjLoad(prjHandler *ptr_tmp): prjHandle(ptr_tmp){ loadXML_prj("xml_file.xml"); } //Destructor prjLoad::~prjLoad(void){ //Terminate The Dom Session XMLPlatformUtils::Terminate(); } bool prjLoad::loadXML_prj(char *prj_filename){ //Start XML Xerces Framework try { XMLPlatformUtils::Initialize(); } catch (const XMLException& toCatch) { char* message = XMLString::transcode(toCatch.getMessage()); cout << "Error during initialization! :\n" << message << "\n"; XMLString::release(&message); return false; } //Create New Parser (SAX) SAXParser* parser = new SAXParser(); //File Input Validation parser->setDoValidation(true); parser->setDoNamespaces(true); //Create our SAX handler object and install it on the parser (Doc & Error Handler) //Using Project as Handler parser->setDocumentHandler(prjHandle); parser->setErrorHandler(prjHandle); //Load File through Xerces XERCES_STD_QUALIFIER ifstream xmlFileHandle; xmlFileHandle.open(prj_filename); //Load Each Line From File To Array xmlFile bool flag = true; while (flag == true) { char token[1000]; //Set array to zeros memset(token,0,sizeof(token)); //Sequential Search if(!(xmlFileHandle.eof())){ xmlFileHandle.getline(token, sizeof(token)); //Check If Line Contains Anything if(!(token)) continue; else { //Load into New Derived Variable for overloading & Safety const char *XMLfile = token; //Debug cout << "Parsing: " << XMLfile << endl; //ERROR WIPE -> NEEDS IMPLIMENTING try { parser->parse(XMLfile); } catch(XMLException &e){ cout << "ERROR OCCURED" << endl; } } } //ELSE STATEMENT FOR EOF-> Set Flag to false therefore exiting while loop else flag = false; } return true; } Thanks For looking at this its been bugging me for hours Cheers -Alex -- View this message in context: http://www.nabble.com/Error-In-Code-%28Sax-Parsing%29-tf2860959.html#a79 93779 Sent from the Xerces - C - Users mailing list archive at Nabble.com.
