Raisons des exceptions
Les exceptions peuvent être générées dans une orchestration de plusieurs façons :
Par une forme Lever une exception , qui lève une exception immédiatement et inconditionnellement. Le contrôle passe de la forme Lever une exception directement au gestionnaire d’exceptions approprié.
Par expiration du délai d'attente dans une transaction longue. Une exception système prédéfinie( Microsoft.XLANG.BaseTypes.TimeOutException) est levée dans ce cas.
Par d'autres échecs de transaction. Pour ces échecs, le moteur d'exécution lève un message défini par le système du type Microsoft.XLANG.BaseTypes.PersistenceException.
Par une exception de code utilisateur. Lorsque des appels vers le code utilisateur externe sont effectués dans une orchestration, les classes du Common Language Runtime appelées peuvent lever des exceptions. Si ces exceptions ne sont pas gérées dans le code utilisateur, elles se propagent finalement dans l'étendue dans laquelle l'appel vers le code utilisateur est effectué.
Par d'autres exceptions système (par exemple, un échec de persistance, une autre exception système ou .NET telle qu'une exception de chargeur de type, ou une erreur de conversion des données).
Notes
Lorsqu’une exception de chargeur de type est levée, l’exception peut ne pas être interceptée dans le bloc Catch Exception dans la même forme Étendue . Cela est dû au fait que l'exception provient du chargeur de type, et non pas du processus d'orchestration BizTalk. En conséquence, elle ne suit pas les règles BizTalk de flux de contrôle.
Par une branche frère dans une étendue voisine interrompant l'exécution. Dans ce cas, l'exception Microsoft.XLANG.BaseTypes.ForcedTerminationException est levée pour chaque branche, et vous pouvez ajouter un gestionnaire d'exceptions à chacune d'elles. Un gestionnaire d'exceptions de ce type ne peut ni lever à nouveau son exception, ni lever d'autres types d'exception.
Par réception d'un message externe indiquant une erreur.