处理 XML PARSE 异常

如果 XML 解析器在解析期间迂到异常或错误,那么它会在 XML-CODE 专用寄存器 中设置异常代码并对 XML 异常事件发出信号。

关于此任务

如果异常代码在特定范围内,那么您可能能够在处理过程中处理异常事件,并恢复解析。

要在处理过程中处理异常,请 执行以下步骤:

过程

  1. 检查 XML-CODE的内容。
  2. 相应地处理异常。
  3. XML-CODE 设置为零以指示您已处理异常。
  4. 将控件返回到解析器。

结果

异常条件不再存在。

仅当 XML-CODE 中传递的异常代码在下列其中一个范围内 (这指示检测到编码冲突) 时,才能以此方式处理异常:

  • 50 - 99
  • 100,001 - 165,535
  • 200,001 - 265,535

异常代码 1-49: 在处理过程中,可以对异常代码在 1-49 范围内的异常进行有限处理。 发生此范围内的异常后,解析器不会发出任何其他正常事件 ( END-OF-DOCUMENT 事件除外) 的信号,即使在返回之前将 XML-CODE 设置为零也是如此。 如果将 XML-CODE 设置为零,那么解析器将继续解析文档,并发出其发现的任何异常的信号。 (这样做可以提供一种有用的方法来发现文档中的多个错误。)

限制: COBOL XML 解析器可能不会发出所有额外异常事件的信号。 异常数限制为 XML PARSE 事件令牌数组中的剩余空间,可能为 8192 个事件。

在发生异常代码在 1-49 范围内的异常 之后的解析结束时, 控件将传递到 ON EXCEPTION 短语中指定的语句。 如果未对 ON EXCEPTION 短语进行编码,那么控制权将传递到 XML PARSE 语句的末尾。 XML-CODE 包含解析器为最新异常设置的代码。

对于除上述范围之外的所有例外情况 ,解析器不会发出任何进一步事件,而是将控制权交给 ON EXCEPTION 短语中指定的语句。 XML-CODE 包含原始异常代码,即使 您将 XML-CODE 设置为 将控制权返回给解析器之前的处理过程也是如此。

如果不想处理异常,请将控制权返回给解析器,而不更改 XML-CODE的值。 解析器将控制传输到 ON EXCEPTION 短语中指定的语句。 如果未对 ON EXCEPTION 短语进行编码,那么控制权将转移到 XML PARSE 语句的末尾。

如果在解析结束之前未发生未处理的异常,那么会将控制传递到 NOT ON EXCEPTION 短语中指定的语句。 如果未对 NOT ON EXCEPTION 短语进行编码,那么控制权将转移到 XML PARSE 语句的末尾。 XML-CODE 包含零。

相关参考资料  
XML文档的编码  
XML解析异常