处理Biztalk中的异常,这些异常不会被Scope形状捕获

时间:2013-08-20 15:07:21

标签: exception-handling biztalk biztalk-2010 biztalk-orchestrations

让我们考虑一下编排。主要活动在范围形状内发生,具有2个相关的Catch Exception形状:1表示System.Exception,1表示一般异常。此编排使用“帮助程序”C#类库,BizTalk作用域/ catch捕获库中引发的异常,以及在其中发生的未处理异常。

我想知道我能够创建的问题是:假设帮助程序库的一个版本被发布,并且突然有一个方法丢失,以前存在并且业务流程试图调用它。不可避免地会抛出MissingMethodException,一旦达到Scope形状,就会发生这种情况。

业务流程未捕获MissingMethodException,因此消息被暂停。我意识到通过适当的测试,这种情况永远不会发生,但我只是试图覆盖它们发生的所有基础(而且实际上只是出于好奇)。

有没有办法捕获这些异常,或者因为它似乎发生在调用范围之前的某个级别?

2 个答案:

答案 0 :(得分:2)

我明白了。我必须包装整个范围,其中包含在另一个范围内使用我的帮助程序库的形状。看来,.dlls(对于帮助器类库)必须在达到范围后立即加载和评估。

如果查看附加图像,我的帮助程序库将在“ValidateWrapper”表达式形状中使用,但是在调用MissingMethodException之前,编排甚至没有将其放在那里(由于缺少方法)在辅助类库中,“GeneralScope”形状无法捕获MissingMethodException但是只要我将GeneralScope包装在另一个范围内,MissingMethodException就被捕获并且可以处理。

这一切都发生了,因为我通过BizTalk管理控制台更新了助手类资源,因此编译器无法警告丢失的方法......但至少现在我知道如果再次发生,我可以捕获异常。 / p>

enter image description here

答案 1 :(得分:1)

您应该知道BizTalk中的业务流程中的异常的处理方式与.NET中的相同:异常总是从基类System.Exception继承。

比如说你有一个自定义的MissingMethodException(它继承自System.Exception),然后你可以捕获MissingMethodException(具有任何特定数据)或System.Exception。如果没有特定的MissingMethodException异常处理程序,则两者都将触发System.Exception异常处理程序。

有关详情,建议您阅读http://www.codeproject.com/Articles/125470/Exception-Handling-for-C-Beginners

BizTalk业务流程与.NET中的任何其他例外情况没有什么不同。

希望这有帮助。