【问题标题】:Exception handling in biztalk 2006 R2biztalk 2006 R2 中的异常处理
【发布时间】:2010-03-16 09:45:10
【问题描述】:

我有一个 Biztalk 2006 R2 项目(与 ESB 指南 1 一起使用) 我在 C# 代码中从 orchstration 调用静态方法,该方法使用一个类将文件数据加载到第 0 部分的 xlang 消息正文中 当我传递不存在的文件路径时,内部类会捕获异常但不要抛出它(在静态方法中有一个 catch 块,而在编排中有真正的异常处理)

静态方法是:


public static XLANGMessage LoadFileIntoMessage(XLANGMessage message, string filePath,Encoding encoding)
        {
            try
            {
                IStreamFactory sf = new FileStreamFactory(filePath,encoding);

                message[0].LoadFrom(sf);
                return message;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

加载文件流的类是:


private class FileStreamFactory : IStreamFactory
        {
            string _fname;
            Encoding _encoding;

            public FileStreamFactory(string fname,Encoding encoding)
            {
                _fname = fname;
                _encoding = encoding;
            }

            public Stream CreateStream()
            {
                try
                {
                    StreamReader sr;
                    sr = new StreamReader
                    (
                        _fname,
                        _encoding
                    );

                    return sr.BaseStream;
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }
        }

我从编排中调用静态方法,并希望在类和方法获取异常之后在编排中捕获异常。

【问题讨论】:

    标签: biztalk esb biztalk2006r2


    【解决方案1】:

    我不确定这里的实际问题是什么......您是在谈论如何在编排中捕获异常?如何让它进入 ESB 异常处理系统或什么?

    要在编排中处理异常,您需要使用 Scope 形状(您可以在其中放入可以引发异常的代码/形状),然后向其添加异常处理程序(有点像 try/catch 块)。

    有关 ESB 的内容,请参见此处:http://msdn.microsoft.com/en-US/library/ee250235(v=BTS.10).aspx

    最后,请允许我说:请不要像在代码中那样处理异常。您不应该为了再次抛出异常而捕获异常。这是一种非常糟糕的编程实践,它会损害性能,还会导致您丢失异常的原始堆栈跟踪,从而使诊断和解决任何问题变得更加困难。见http://winterdom.com/2002/09/rethrowingexceptionsinc

    【讨论】:

    • 感谢您的回复,我确实捕获了异常以便在调试中看到它,这就是您看到此代码的原因。问题是异常发生在类中(第二个代码链接)并且orch没有捕获它(在方法应该捕获它之后)但是如果我在方法中抛出错误然后orch捕获它并处理它我确实使用ascope在编排中并按本书构建 excption 处理(该系统已经投入生产并且到目前为止工作完美,除了这个错误)谢谢
    猜你喜欢
    • 1970-01-01
    • 2010-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多