2017-01-13 13 views
0

У меня есть класс, расширяющий org.xml.sax.ext.DefaultHandler2, в котором я переопределятьJava: Поймать SAXException брошенного метода в надтипе

public void startElement(String uri, 
    String localName, String qName, Attributes attributes) throws SAXException 

, который первоначально из надтипа DefaultHandler2 «ы org.xml.sax.helpers.DefaultHandler.

Когда я пытаюсь разобрать файл XML в кодировке UTF-8 с BOM, он бросает исключение

[Fatal Error] :1:1: Content is not allowed in prolog. 

, как хорошо документированы в других местах.

Теперь я хотел бы поймать это исключение в своем коде, то есть мой класс, расширяющий DefaultHandler2, но потому, что эксим бросается на сам метод, я не вижу способа сделать это.

Есть ли один? Или я придерживаюсь первоначального исключения?

+0

Не могли бы вы вывести stacktrace исключения, которое вы хотите поймать – alexbt

+0

@alexbt: мой класс встроен в инфраструктуру OS CLI CLI, так как я не могу правильно управлять обработкой ошибок, то, что я получаю, '[Fatal Error]: 1: 1: содержимое не допускается в прологе.' –

ответ

0

Я решил эту проблему, установив свое расширение DefaultHandler2 в качестве обработчика ошибок для считывания XML XML-парсера, как заведенный через parser.getXMLReader() (org.xml.sax.XMLReader имеет метод setErrorHandler(ErrorHandler errorHandler) ...

Перекрытие public void fatalError(SAXParseException e), я могу справиться с фатальная ошибка.