Frage

Ich habe ein BizTalk 2006 R2 -Projekt (verwendet mit ESB -Leitlinie 'Es gibt nicht die Innenklasse, die die Ausnahme fangen, aber wirf sie nicht hoch (in der statischen Methode gibt es einen Hakenblock und in der Orchstration gibt es die wirkliche Handhabung der Ausnahme)

Die statische Methode lautet:


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

Die Klasse, die den Dateistrom lädt, lautet:


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

Ich nenne die statische Methode aus der Orchestrierung und erwarte, die Ausnahme in meiner Orchestrierung nach der Klasse zu fangen, und die Methode erhält sie.

War es hilfreich?

Lösung

Ich bin mir nicht sicher, wie die eigentliche Frage hier ist ... Sprechen Sie darüber, wie Sie die Ausnahme in der Orchestrierung aufnehmen können? Wie kann man es in das ESB -Ausnahmebehandlungssystem eingehen oder was?

Um eine Ausnahme in einer Orchestrierung zu bewältigen, müssen Sie eine Zielfernrohrform verwenden (wo Sie den Code/die Formen einfügen, die die Ausnahme auswerfen können) und dann einen Ausnahmebehandler hinzuzufügen (irgendwie wie ein Versuch/Fangblock).

Für das ESB -Zeug siehe hier: http://msdn.microsoft.com/en-us/library/ee250235(v=bts.10).aspx

Erlauben Sie mir schließlich zu sagen: Bitte behandeln Sie keine Ausnahmen, wie Sie es in Ihrem Code bereits tun. Sie sollten keine Ausnahme machen, nur um sie wieder zu werfen. Es ist eine sehr schlechte Programmierungspraxis, es schadet der Leistung und es wird auch dazu führen, dass Sie die ursprüngliche Stapelspur der Ausnahme verlieren, was es schwieriger macht, Probleme zu diagnostizieren und zu lösen. Sehen http://winterdom.com/2002/09/RethringingExceptionsInC

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top