Domanda

Ho un progetto di 2006 R2 Biztalk (utilizzato con ESB Guidance 1) Sto chiamando da orchstration ad un metodo statico in codice C #, questo metodo utilizza una classe di caricare un file dati nel corpo del messaggio XLANG a parte 0 Quando passo filepath che non esiste la classe all'interno cattura l'eccezione, ma non gettare in su (nel metodo statico c'è un blocco catch e nel orchstration c'è il vero e proprio trattamento di eccezione)

Il metodo statico è:


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

La Classe che caricare il flusso di file è:


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

io chiamo il metodo statico dal orchestrazione e aspetto di intercettare l'eccezione della mia orchestrazione dopo la classe e il metodo ottiene.

È stato utile?

Soluzione

Non sono sicuro di quello che la domanda reale qui è .... stai parlando come catturare l'eccezione nell'orchestrazione? Come per farlo andare nel sistema di gestione delle eccezioni ESB o cosa?

Per gestire un'eccezione in un'orchestrazione è necessario utilizzare una forma Campo di applicazione (in cui si inserisce nel codice / forme che possono generare l'eccezione) e quindi aggiungere un gestore di eccezioni ad esso (un po 'come un blocco try / catch).

Per la roba ESB, vedere qui: http://msdn.microsoft.com/en-US/library/ee250235(v=BTS.10).aspx

Infine, mi permetta di dire: Si prega di non gestire le eccezioni, come si sta facendo nel codice già. Non dovreste prendere un'eccezione solo per gettare di nuovo. E 'una molto povera pratica di programmazione, fa male le prestazioni e sarà anche causare la perdita della traccia dello stack originale della deroga, rendendo più difficile da diagnosticare e risolvere eventuali problemi. Vedere http://winterdom.com/2002/09/rethrowingexceptionsinc

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top