【问题标题】:Java: Catch a SAXException thrown by method in supertypeJava:捕获超类型中的方法抛出的 SAXException
【发布时间】:2017-01-13 13:22:25
【问题描述】:

我有一个扩展 org.xml.sax.ext.DefaultHandler2 的类,我在其中覆盖了

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

最初来自DefaultHandler2的超类型org.xml.sax.helpers.DefaultHandler

当我尝试解析以 UTF-8 with BOM 编码的 XML 文件时,它会引发异常

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

在其他地方都有详细记录。

现在,我想在我的代码中捕获这个异常,即我的类扩展 DefaultHandler2,但是由于方法本身引发了接收,我看不到这样做的方法。

有吗?还是我坚持原来的例外?

【问题讨论】:

  • 能否请您发布您希望捕获的异常的堆栈跟踪
  • @alexbt:我的类作为一个包嵌入在 CLI OSGi 框架中,所以我无法正确控制错误处理,我得到的是[Fatal Error] :1:1: Content is not allowed in prolog.

标签: java inheritance exception-handling sax saxparseexception


【解决方案1】:

我通过将DefaultHandler2 的扩展设置为XML 解析器的XML 阅读器的错误处理程序来解决这个问题,正如通过parser.getXMLReader() 获得的那样(org.xml.sax.XMLReader 有一个方法setErrorHandler(ErrorHandler errorHandler)...

覆盖public void fatalError(SAXParseException e),我可以处理致命错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多