让我们考虑一下编排。主要活动在范围形状内发生,具有2个相关的Catch Exception形状:1表示System.Exception,1表示一般异常。此编排使用“帮助程序”C#类库,BizTalk作用域/ catch捕获库中引发的异常,以及在其中发生的未处理异常。
我想知道我能够创建的问题是:假设帮助程序库的一个版本被发布,并且突然有一个方法丢失,以前存在并且业务流程试图调用它。不可避免地会抛出MissingMethodException
,一旦达到Scope形状,就会发生这种情况。
业务流程未捕获MissingMethodException
,因此消息被暂停。我意识到通过适当的测试,这种情况永远不会发生,但我只是试图覆盖它们发生的所有基础(而且实际上只是出于好奇)。
有没有办法捕获这些异常,或者因为它似乎发生在调用范围之前的某个级别?
答案 0 :(得分:2)
我明白了。我必须包装整个范围,其中包含在另一个范围内使用我的帮助程序库的形状。看来,.dlls(对于帮助器类库)必须在达到范围后立即加载和评估。
如果查看附加图像,我的帮助程序库将在“ValidateWrapper”表达式形状中使用,但是在调用MissingMethodException
之前,编排甚至没有将其放在那里(由于缺少方法)在辅助类库中,“GeneralScope”形状无法捕获MissingMethodException
但是只要我将GeneralScope包装在另一个范围内,MissingMethodException
就被捕获并且可以处理。
这一切都发生了,因为我通过BizTalk管理控制台更新了助手类资源,因此编译器无法警告丢失的方法......但至少现在我知道如果再次发生,我可以捕获异常。 / p>
答案 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中的任何其他例外情况没有什么不同。
希望这有帮助。