Nach Export wird SAXParseException nicht mehr geworfen

sylo

Bekanntes Mitglied
Hi zusammen

folgendes Problem:

Ich habe ein Programm geschrieben, welches eine XML-Datei ausliest und sie in einer TextArea ausgibt. Wenn das XML-Dokument nicht valide ist, wird an dieser Stelle:
Java:
domXML = (Document) db.parse(new InputSource(new StringReader(xmlString)));
eine SAXParseException geworfen. Diese liefert mir die Zeilennummer des Fehlers, welche ich später weiterverarbeite. Dies funktioniert alles soweit.

Wenn ich aber mein Tool exportiere, dann wirft er an der oben genannten Stelle keine Exception. Er durchläuft die Methode parse(), zeigt mir auf der Konsole den Fehler an (Der DOM schreibt wohl mit system.out.print() den Fehler auf die Konsole) aber wirft die Exception nicht.

Hat einer ne Idee?

Grüße
sylo
 
Hi

als Nachtrag. Ich benutze Eclipse. Muss man da evtl. was in der "Run Configuration" ändern? Vielleicht zusätzliche Attribute?

Darüberhinaus steht in der API folgendes:
This exception may include information for locating the error in the original XML document, as if it came from a Locator object. Note that although the application will receive a SAXParseException as the argument to the handlers in the ErrorHandler interface, the application is not actually required to throw the exception; instead, it can simply read the information in it and take a different action.
Heißt das, dass die Exception nicht unbedingt geworfen werden muss? Wenn ja wovon ist es abhängig?

Grüße
sylo
 
Hi zusammen

habe mittlerweile folgendes heraus bekommen.

Wenn ich um die parse-Methode ein try-catch-Block mache und die SaxParseException abfange, dann funktioniert das, wie oben erwähnt, unter Eclipse, aber nicht nach Export des Projektes.

Wenn ich aber meinem DocumentBuilder vorher einen ErrorHandler zuweise, also sowas:
Java:
db.setErrorHandler(new ErrorHandler() {

                public void warning(SAXParseException exception) throws SAXException {
                    // TODO Auto-generated method stub

                }

                public void fatalError(SAXParseException exception) throws SAXException {
                    // TODO Auto-generated method stub

                }

                public void error(SAXParseException exception) throws SAXException {
                    // TODO Auto-generated method stub
                    
                }
            });
dann wird die Exception unter Eclipse weiterhin unter dem try-catch-Block abfangen, nach dem Export springt er aber, wenn XML-Dokument ungültig, in die error-Methode des Errorhandlers.

Somit bekomme ich die Zeilennummer heraus und mein Problem wäre gelöst.
Ich verstehe aber dieses Verhalten nicht. Warum benutzt er unter Eclipse try-catch und nach export den Errorhandler?

Grüße
sylo
 

Zurück
Oben