سؤال

لدي مشروع BizTalk 2006 R2 (يستخدم مع ESB Guidance 1) أنا أتصل من Orchstration إلى طريقة ثابتة في رمز C# ، تستخدم هذه الطريقة فئة لتحميل بيانات ملف إلى هيئة رسالة XLANG في الجزء 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 أم ماذا؟

للتعامل مع استثناء في تزامن ، تحتاج إلى استخدام شكل نطاق (حيث تضع الكود/الأشكال التي يمكن أن ترمي الاستثناء) ثم إضافة معالج استثناء إليه (كيندا مثل كتلة المحاولة/الصيد).

للاطلاع على أشياء 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