模块 java.xml

接口 ErrorHandler

所有已知的实现类:
DefaultHandler , DefaultHandler2 , HandlerBase , XMLFilterImpl

public interface ErrorHandler
SAX 错误处理程序的基本接口。

如果 SAX 应用程序需要实现自定义错误处理,它必须实现此接口,然后使用 setErrorHandler 方法向 XML 阅读器注册一个实例。然后解析器将通过该接口报告所有错误和警告。

WARNING: 如果应用程序确实 not 注册了一个 ErrorHandler,XML 解析错误将不会被报告,除了 SAXParseException s 将被抛出用于致命错误。为了检测有效性错误,必须注册一个对 error() 调用执行某些操作的 ErrorHandler。

对于 XML 处理错误,SAX 驱动程序必须优先使用此接口而不是抛出异常:由应用程序决定是否为不同类型的错误和警告抛出异常。但是请注意,不要求解析器在调用 fatalError 后继续报告其他错误。换句话说,SAX 驱动程序类可能会在报告任何 fatalError 后抛出异常。解析器也可能会针对非 XML 错误抛出适当的异常。例如,XMLReader.parse() 会针对访问实体或文档的错误抛出 IOException。

自从:
1.4, SAX 1.0
参见:
  • 方法详情

    • warning

      void warning(SAXParseException  exception) throws SAXException
      收到警告通知。

      SAX 解析器将使用此方法来报告不是 XML 推荐定义的错误或致命错误的情况。默认行为是不采取任何行动。

      SAX 解析器必须在调用此方法后继续提供正常的解析事件:应用程序应该仍然可以处理文档直到结束。

      过滤器也可以使用此方法来报告其他非 XML 警告。

      参数:
      exception - 封装在 SAX 解析异常中的警告信息。
      抛出:
      SAXException - 任何 SAX 异常,可能包装另一个异常。
      参见:
    • error

      void error(SAXParseException  exception) throws SAXException
      接收可恢复错误的通知。

      这对应于 W3C XML 1.0 Recommendation 的 1.2 节中“错误”的定义。例如,验证解析器将使用此回调来报告违反有效性约束的情况。默认行为是不采取任何行动。

      SAX 解析器必须在调用此方法后继续提供正常的解析事件:应用程序应该仍然可以处理文档直到结束。如果应用程序不能这样做,那么即使 XML 推荐不要求它这样做,解析器也应该报告一个致命错误。

      过滤器也可以使用此方法报告其他非 XML 错误。

      参数:
      exception - 封装在 SAX 解析异常中的错误信息。
      抛出:
      SAXException - 任何 SAX 异常,可能包装另一个异常。
      参见:
    • fatalError

      void fatalError(SAXParseException  exception) throws SAXException
      接收不可恢复的致命错误通知。

      正如 W3C XML 1.0 Recommendation 的第 1.2 节中所定义的,致命错误是指那些会使解析器无法继续正常处理的错误。这些包括违反 W3C XML 1.0 Recommendation 中描述的格式良好约束、无效编码和禁止的结构错误。

      API 注意:
      应用程序必须假定解析器在报告致命错误后无法再执行正常处理,并且可以通过抛出 SAXException 而不调用 ContentHandler.endDocument() 来停止。此外,不能指望解析器能够返回有关文档其余部分的逻辑结构的准确信息,即使它可能能够恢复解析。
      实现注意事项:
      调用此方法后,解析器可能会通过抛出一个 SAXException 来停止处理,或者实现一个可以指示它在发生致命错误后继续进行的功能。在后一种情况下,它可能会在不保证正确性的情况下报告文档其余部分的事件。
      参数:
      exception - 封装在 SAXParseException 中的错误信息。
      抛出:
      SAXException - 如果应用程序选择停止解析