代码之家  ›  专栏  ›  技术社区  ›  Bensonius

处理Biztalk中未被Scope形状捕获的异常

  •  0
  • Bensonius  · 技术社区  · 13 年前

    让我们考虑一下配器。主要活动发生在具有2个关联Catch Exception形状的作用域形状内:1个用于System.Exception,1个用于General Exception。此编排使用“助手”C#类库,BizTalk scope/catch捕获库中引发的异常,以及库中发生的未处理异常。

    我想知道的是,我能够创建的问题是:假设发布了一个版本的帮助程序库,突然缺少了一个以前存在的方法,编排试图调用它 MissingMethodException 抛出,这似乎是在达到Scope形状后立即发生的。

    这个 未命中方法异常 未被业务流程捕获,因此消息被挂起。我意识到,通过适当的测试,这是不应该发生的,但我只是试图在它们发生时涵盖所有的基础(实际上只是出于好奇)。

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

    2 回复  |  直到 11 年前
        1
  •  2
  •   Bensonius    13 年前

    我想明白了。我不得不将包含形状的整个作用域包装起来,同时在另一个作用域中使用我的辅助库。似乎在到达作用域后,.dlls(用于帮助程序类库)一定已经被加载并求值。

    如果你看一下附加的图像,我的助手库被用于“ValidateWrapper”表达式形状,但编排甚至在 MissingMethodException 正在被调用(由于助手类库中缺少方法),“GeneralScope”形状无法捕获 未命中方法异常 但当我将GeneralScope封装在另一个范围中时 未命中方法异常 被抓住了,可以处理。

    发生这一切是因为我通过BizTalk管理控制台更新了助手类资源,因此编译器无法警告缺少的方法。。。但至少现在我知道,如果再次发生异常,我可以抓住它。

    enter image description here

        2
  •  1
  •   zurebe-pieter    13 年前

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

    例如,假设您有一个自定义的MissingMethodException(继承自System.Exception),那么您可以捕获MissingMethodException(以具有任何特定的数据)或System.Exception。如果没有特定的MissingMethod异常处理程序,两者都将触发System.Exception异常处理程序。

    想了解更多信息,我建议阅读 http://www.codeproject.com/Articles/125470/Exception-Handling-for-C-Beginners

    BizTalk业务流程与.NET中该部分的任何其他异常没有什么不同。

    希望这能有所帮助。