如果在您希望终止消息处理的消息流中检测到错误或其他情况,可以通过两种方式在消息流中抛出异常:
在 Compute、Database 或 Filter 节点的 ESQL 模块中的任何地方包含 THROW 语句。使用有关语句的选项对要插入到异常中的您自己的数据进行编码。
设置节点属性来标识异常的源和内容。
您可以使用语句选项或节点属性指定插入到消息文本中的消息标识和值,并对解释异常的用户给出其他信息和标识。您可以在代理可以使用的任何目录中指定任何消息。请参阅使用来自用户定义的扩展的事件日志,获取更多信息。
您可能要抛出异常的情况是由消息流的行为确定的;设计消息流时,您要确定此操作可能适当的位置。例如,您可能要检查输入消息的内容来确保它符合“输入节点无法检测到”这一标准(可能检查是否收到特定消息格式)。
下面的示例使用示例“发票消息”来显示可以如何使用 ESQL THROW 语句。如果要检查发票号是否在特定的范围内,则对所收到的不在有效范围内的任何发票消息抛出异常。
--Check for invoice number lower than permitted range IF Body.Invoice.InvoiceNo < 100000 THEN THROW USER EXCEPTION CATALOG 'MyCatalog' MESSAGE 1234 VALUES ('Invoice number too low', Body.Invoice.InvoiceNo); -- Check for invoice number higher than permitted range ELSEIF Body.InvoiceNo > 500000 THEN THROW USER EXCEPTION CATALOG 'MyCatalog' MESSAGE 1235 VALUES ('Invoice number too high', Body.Invoice.InvoiceNo); ELSE DO -- invoice number is within permitted range -- complete normal processing ENDIF;