ExceptionList 树是逻辑消息树的一部分,消息流在其中编写有关处理消息时所发生的异常的信息。
ExceptionList 树的根称为 ExceptionList,该树由一组零个或多个异常描述组成。如果发生异常,就会由消息流植入 ExceptionList 树。如果在处理消息流期间没有发生异常情况,则与该消息关联的异常列表只由一个根元素。即它实际上是一个空的异常列表。
发生异常后,此 ExceptionList 树可由接收消息的消息流中的其他节点访问。您只能在 Compute 节点中修改它的内容。
如果发生异常情况,消息处理被暂挂并抛出异常。控制被传递回较高级别,即,一个封闭的捕捉块。并会构建 ExceptionList 以描述故障情况,且会通过异常处理消息流路径把整个消息与 LocalEnvironment 和新植入的 ExceptionList 一起传播。
ExceptionList 的子代始终为 RecoverableException。虽然在某些情况下可能会生成多于一个子代,但根通常只有一个子代。ExceptionList 的子代包含多个子代,其中最后一个提供了特定于异常类型的更多信息,它可以是以下某个异常:
RecoverableException 异常列表的结构如下所示:
可以将异常描述结构重复并嵌套以产生 ExceptionList 树。在该树中:
树中的子代采取的形式为许多提供异常详细信息的名称-值元素及零个或多个名称为 Insert 的名称元素。名称-值元素中标识的 NLS(本地语言支持)消息号标识了 WebSphere Message Broker 错误消息。Insert 值用于替换该消息内的变量,并提供有关导致异常发生的原因的更多详细信息。
下表描述了上图所显示的异常列表中的名称-值元素。
名称 | 类型 | 描述 | |
---|---|---|---|
File1 | 字符串 | C++ 源文件名 | |
Line1 | 整数 | C++ 源文件行号 | |
Function1 | 字符串 | C++ 源函数名 | |
Type2 | 字符串 | 源对象类型 | |
Name2 | 字符串 | 源对象名 | |
Label2 | 字符串 | 源对象号 | |
Text1 | 字符串 | 附加文本 | |
Catalog3 | 字符串 | NLS 消息编目名4 | |
Severity3 | 整数 | 1 = 信息 |
|
Number3 | 整数 | NLS 消息号4 | |
Insert3 | 类型 | 整数 | 值的数据类型:
0 = 未知 |
Text | 字符串 | 数据值 | |
注:
|
当消息流处理完成时,会废弃 ExceptionList 树。
航空公司订票样本使用 XML_Reservation 消息流中的 ExceptionList 来将错误信息传递到 Throw 节点,该节点会生成一条消息,其中包含了来自 ExceptionList 的信息。