我有一个BizTalk 2006 R2项目(与ESB指南一起使用),我正在从乐团调用C#代码中的静态方法,此方法使用一类将文件数据加载到Xlang消息正文中,当时我通过FilePath的第0部分'存在内部班级捕获异常,但不要将其扔掉(在静态方法中,有一个捕获块,在乐团中,有例外的真实处理)

静态方法是:


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;
                }
            }
        }

我从编排中调用静态方法,并期望在课后我的编排中捕获异常,该方法得到了。

有帮助吗?

解决方案

我不确定这里是什么实际问题。...您在谈论如何在编排中捕捉异常吗?如何使其进入ESB异常处理系统或什么?

要处理编排中的异常,您需要使用示波器形状(将其放入可以抛出异常的代码/形状的位置),然后在其上添加异常处理程序(有点像try/catch块)。

对于ESB的东西,请参阅此处: http://msdn.microsoft.com/en-us/library/ee250235(V=BTS.10).aspx

最后,请允许我说:请不要像您已经在代码中所做的那样处理异常。您不应该仅仅抓住例外才能再次扔它。这是一种非常差的编程实践,它会损害性能,也会使您失去原始的例外堆栈痕迹,从而使诊断和解决任何问题变得更加困难。看 http://winterdom.com/2002/09/rethrowingexceptionsinc

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top