异常的原因
可以通过以下方式在业务流程中生成异常:
由 “抛出异常” 形状,可立即无条件地引发异常。 控件从 “引发异常” 形状直接传递到相应的异常处理程序。
在长时间运行的事务中超时。 在这种情况下,将引发预定义的系统异常(Microsoft.XLANG.BaseTypes.TimeOutException)。
由其他一些事务失败。 运行时引擎针对这些故障引发系统定义的消息,例如 Microsoft.XLANG.BaseTypes.PersistenceException。
由用户代码异常。 在业务流程中调用外部用户代码时,调用的公共语言运行时类可能会引发异常。 如果未在用户代码中处理这些异常,它们最终会传播到调用用户代码的范围。
其他一些系统异常 (例如,持久性失败、另一个 .NET 或系统异常(如类型加载程序异常)或数据转换错误) 。
备注
当引发类型加载程序异常时,该异常可能不会在同一作用域形状的 Catch 异常块中捕获。 这是因为异常来自类型加载程序,而不是来自 BizTalk 业务流程进程。 因此,它不遵循控制流的 BizTalk 规则。
由周围范围内的同级分支停止执行。 在这种情况下,Microsoft.XLANG.BaseTypes.ForcedTerminationException 将引发到每个分支,你可能希望向每个分支添加异常处理程序。 此类异常处理程序不能重新引发其异常,也不应尝试引发任何其他类型的异常。
通过收到指示错误的外部消息。