Java:捕获超类型中方法引发的SAXException
我有一个扩展了Java:捕获超类型中方法引发的SAXException,java,inheritance,exception-handling,sax,saxparseexception,Java,Inheritance,Exception Handling,Sax,Saxparseexception,我有一个扩展了org.xml.sax.ext.DefaultHandler2的类,我在其中重写了 public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException 它最初来自DefaultHandler2的超类型org.xml.sax.helpers.DefaultHandler 当我试图用BOM解析以UTF-8编码的XML文件
org.xml.sax.ext.DefaultHandler2
的类,我在其中重写了
public void startElement(String uri,
String localName, String qName, Attributes attributes) throws SAXException
它最初来自DefaultHandler2
的超类型org.xml.sax.helpers.DefaultHandler
当我试图用BOM解析以UTF-8编码的XML文件时,它抛出一个异常
[Fatal Error] :1:1: Content is not allowed in prolog.
其他地方也有很好的记录
现在,我想在我的代码中捕捉这个异常,也就是说,我的类扩展了DefaultHandler2
,但是因为eception是在方法本身上抛出的,所以我找不到一种方法来实现这一点
有吗?还是我被原来的异常卡住了?我已经解决了这个问题,将我的
DefaultHandler2
扩展设置为XML解析器的XML读取器的错误处理程序,通过parser.getXMLReader()
(org.XML.sax.XMLReader
有一个方法setErrorHandler(ErrorHandler ErrorHandler)
覆盖
public void fatalError(SAXParseException)
,我可以处理这个致命错误。你能发布你想要的异常的堆栈跟踪吗catch@alexbt:我的类作为捆绑包嵌入在CLI OSGi框架中,因此我无法正确控制错误处理,我得到的是[致命错误]:1:1:序言中不允许包含内容。