*very

On May 18, 2010, at 12:40 AM, Patrick Rutkowski wrote:

> Ok, so, I'm new to Xerces as of 48 hours ago, and so far I really like it; 
> but this problem I just ran into is extraordinarily frustrating.
> 
> First, let me show you a test case of how it's _supposed_ to work:
> http://www.rutski89.com/static/xerces-test.cpp
> 
> Running this code produces something like this:
> 
> rut...@imac:~$ g++ test.cpp -lxerces-c && ./a.out
> fatal:SAXParseException:invalid document structure
> SAXException
> rut...@imac:~$ 
> 
> Just as expected, since the XML data is the empty string "", the fatalErorr() 
> in MyErrorHandler is triggered, it re-throws its "e", and that is then caught 
> by the "catch(const SAXException& e)" in main(). Of course, SAXParseException 
> is a sub-type of SAXException, so you would expect the catch in main() to 
> happen.
> 
> But now take a look at this code which is totally the same, yet for some 
> reason totally broken. Note that this is no longer self-contained test case 
> code, there's no main(), you can run this, it's actually from my project:
> 
> http://www.rutski89.com/static/xerces-broken.cpp
> 
> When I call ParseXML("") for some reason it does NOT function the same as the 
> test case. I have verified with test prints and gdb that fatalError() in 
> ThrowErrorHandler is indeed triggered like it's supposed to be, so we're good 
> so far. But then, for some weird reason, the "catch(const SAXException& e)" 
> is NOT triggered. Instead, the SAXParseException which is re-thrown by 
> fatalError() gets caught by "catch(...)" in ParseXML(). God knows why. 
> 
> I need it to catch properly!
> 
> ARRRRRRRG! What did I do to deserves this!?
> 
> A ver frustrated developer,
> -Patrick
> 

Reply via email to