异常列表树

异常列表树是逻辑树(消息组合件)的一部分,消息流将在其中写入有关处理消息时发生的异常的信息。

异常列表树根名称为 ExceptionList,并且树由一组零个或多个异常描述组成。 如果发生异常,那么异常列表树将由消息流进行填充。 如果在处理消息流期间没有发生异常情况,与该消息关联的异常列表将只有一个根元素。 即它实际上是一个空的异常列表。

在发生异常后接收消息的消息流中的其他节点可访问异常列表树。 只能在提供用于修改出站消息树的接口的节点 (例如, Compute 节点) 中修改异常列表树的内容。

如果发生异常情况,消息处理被暂挂并抛出异常。 控制被传递回较高级别;也就是一个封闭的捕捉块。 构建异常列表以描述故障情况,并且会通过异常处理消息流路径将整条消息与局部环境树以及新填充的异常列表一起传播。

ExceptionList 的子代可以是以下列表中包含的任何一个异常类型。 通常,仅创建一个根子代,但是在某些情况下可生成多个。 ExceptionList 的子代包含大量子代,每个都可以是以下列表中的任何一个类型。 这些子代的最后一个提供特定于异常类型的更多信息。
  • FatalException
  • RecoverableException
  • ConfigurationException
  • SecurityException
  • ParserException
  • ConversionException
  • DatabaseException
  • UserException
  • CastException
  • MessageException
  • SqlException
  • SocketException
  • SocketTimeoutException
  • UnknownException

下图显示可恢复异常的异常列表树结构:

可恢复异常的异常列表树结构

可重复和嵌套异常描述结构以生成异常列表树。 在该树中:

  • 深度(即,从根开始的父代-子代层数)表示同一异常逐步增加的详细信息。
  • 树的宽度表示放弃处理前发生的不同异常情况的数量。 此数量通常为 1,并且生成一个异常列表树,其中包含作为子代相互连接的大量异常描述。
  • 在树中的编号点:
    1. 该子代可以是本主题前面列出的任何一个异常类型。 所有这些元素都显示有子代:如果有,最后一个子代与其父代是同一元素。
    2. 可以重复该元素。
    3. 如果存在此子代,其包含的子代与其父代包含的相同。

树中的子代采取的形式为许多提供异常详细信息的名称/值元素及零个或多个名为 Insert 的名称元素。 名称/值元素中标识的 NLS (本地语言支持) 消息号标识 IBM® App Connect Enterprise 错误消息。 Insert 值用于替换此消息中的变量,并提供有关异常原因的更多详细信息。

下表中描述了上图中显示的异常列表中的名称/值元素。

名称 类型 描述
File1 字符串 C++ 源文件名
Line1 整型 C++ 源文件行号
Function1 字符串 C++ 源函数名
Type2 字符串 源对象类型
Name2 字符串 源对象名
Label2 字符串 源对象号
Text1 字符串 可选非 NLS 文本
Catalog3 字符串 NLS 消息编目名4
Severity3 整型
1 = 信息
2 = 警告
3 = 错误
Number3 整型 NLS 消息号4
Insert3 类型 整型 值的数据类型:
0 = 未知
1 = 布尔
2 = 整数
3 = 浮点
4 = 十进制
5 = 字符
6 = 时间
7 = GMT 时间
8 = 日期
9 = 时间戳记
10 = GMT 时间戳记
11 = 时间间隔
12 = BLOB
13 = 位数组
14 = 指针
文本 字符串 数据值
注:
  1. 请勿将 File、Line、Function 和 Text 元素用于异常处理的判定。 这些元素确保可以将信息写入日志以供 IBM 服务人员使用,并且可随时更改内容和顺序。
  2. Type、Name 和 Label 元素定义发生异常情况时处理消息的对象(通常是消息流节点)。
  3. Catalog、Severity 和 Number 元素定义 NLS 消息:包含所显示的两个名称/值元素的 Insert 元素定义插入到 NLS 消息中的操作。
  4. NLS 消息编目名和 NLS 消息号指可转换的消息编目和消息号。

当消息流处理完成时,会废异常列表树。