【问题标题】:Handling Exceptions in Biztalk which don't get caught by Scope shape处理 Biztalk 中未被 Scope 形状捕获的异常
【发布时间】:2013-08-22 17:06:06
【问题描述】:

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

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

MissingMethodException 未被编排捕获,因此消息被挂起。我意识到,通过适当的测试,这永远不会发生,但我只是试图覆盖所有发生的基础(实际上只是出于好奇)。

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

【问题讨论】:

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


    【解决方案1】:

    我想通了。我必须将包含形状的整个范围包装起来,并在另一个范围中使用我的辅助库。看来,.dll(用于帮助程序类库)必须在达到范围后立即被加载和评估。

    如果您查看附加的图像,我的帮助程序库用于“ValidateWrapper”表达式形状,但在调用 MissingMethodException 之前,编排甚至没有实现(由于缺少方法helper 类库),“GeneralScope”形状无法捕捉到MissingMethodException,但只要我将GeneralScope 包裹在另一个作用域中,MissingMethodException 就会被捕捉到并且可以处理。

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

    【讨论】:

      【解决方案2】:

      您应该知道,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 中的任何其他异常没有什么不同。

      希望这会有所帮助。

      【讨论】:

      • 感谢您的评论。我确实知道异常是如何工作的以及如何处理它们。我可能在原始帖子中说得不够清楚,但我正在处理大多数异常,但使用 2 个范围 1:System.Exception 和 2:BizTalk 的“一般异常”。问题是,似乎 biztalk 范围可能会在进入范围之前预加载帮助程序库并找到缺少的方法,因此 Catch 没有捕获它。
      猜你喜欢
      • 2014-07-24
      • 1970-01-01
      • 2017-11-25
      • 2017-05-08
      • 1970-01-01
      • 2013-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多