Java: поймать исключение SAXException, созданное методом в супертипе

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

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

который происходит от супертипа DefaultHandler2 org.xml.sax.helpers.DefaultHandler.

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

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

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

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

Есть ли один? Или я застрял с исходным исключением?


person s.d    schedule 13.01.2017    source источник
comment
Не могли бы вы опубликовать трассировку стека исключения, которое вы хотите поймать   -  person alexbt    schedule 13.01.2017
comment
@alexbt: мой класс встроен в инфраструктуру CLI OSGi в виде пакета, поэтому я не могу должным образом контролировать обработку ошибок, я получаю [Fatal Error] :1:1: Content is not allowed in prolog.   -  person s.d    schedule 13.01.2017


Ответы (1)


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

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

person s.d    schedule 13.01.2017