处理 XML PARSE 异常
如果 XML 解析器在解析期间迂到异常或错误,那么它会在 XML-CODE 专用寄存器 中设置异常代码并对 XML 异常事件发出信号。
关于此任务
如果异常代码在特定范围内,那么您可能能够在处理过程中处理异常事件,并恢复解析。
要在处理过程中处理异常,请 执行以下步骤:
过程
- 检查
XML-CODE的内容。 - 相应地处理异常。
- 将
XML-CODE设置为零以指示您已处理异常。 - 将控件返回到解析器。
结果
异常条件不再存在。
仅当 XML-CODE 中传递的异常代码在下列其中一个范围内 (这指示检测到编码冲突) 时,才能以此方式处理异常:
- 50 - 99
- 100,001 - 165,535
- 200,001 - 265,535
异常代码 1-49: 在处理过程中,可以对异常代码在 1-49 范围内的异常进行有限处理。 发生此范围内的异常后,解析器不会发出任何其他正常事件 ( END-OF-DOCUMENT 事件除外) 的信号,即使在返回之前将 XML-CODE 设置为零也是如此。 如果将 XML-CODE 设置为零,那么解析器将继续解析文档,并发出其发现的任何异常的信号。 (这样做可以提供一种有用的方法来发现文档中的多个错误。)
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 包含零。