Question

J'ai un projet R2 Biztalk 2006 (utilisé avec ESB Guidance 1) Je fais appel de orchstration à une méthode statique dans c # code, cette méthode utilise une classe pour charger des données de fichiers dans le corps du message XLANG à partie 0 Quand je passe filepath qui n'existe pas la classe à l'intérieur attraper l'exception, mais ne jette pas vers le haut (dans la méthode statique il y a un bloc catch et dans le orchstration il y a la gestion réelle de l'exception)

La méthode statique est la suivante:


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 qui charge le flux de fichier est:


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

J'appelle la méthode statique de l'orchestration et s'attendre à attraper l'exception dans mon orchestration après la classe et la méthode obtient.

Était-ce utile?

La solution

Je ne suis pas sûr de ce que la question réelle est ici .... tu racontes comment attraper l'exception dans l'orchestration? Comment faire entrer dans le système de gestion des exceptions ESB ou quoi?

Pour gérer une exception dans une orchestration, vous devez utiliser une forme Scope (où vous mettez dans le code / formes qui peuvent jeter l'exception), puis ajouter un gestionnaire d'exception à elle (un peu comme un bloc try / catch).

Pour les choses ESB, voir ici: http://msdn.microsoft.com/en-US/library/ee250235(v=BTS.10).aspx

Enfin, permettez-moi de dire: S'il vous plaît ne pas gérer les exceptions que vous faites dans votre code déjà. Vous ne devriez pas attraper une exception juste pour le jeter à nouveau. Il est une pratique de programmation très pauvres, il nuit à la performance et aussi vous faire perdre la trace de la pile d'origine de l'exception, ce qui rend plus difficile à diagnostiquer et résoudre les problèmes. Voir http://winterdom.com/2002/09/rethrowingexceptionsinc

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top