Contenuti della struttura ad albero del messaggio dopo un'eccezione

Il contenuto della struttura ad albero del messaggio viene aggiornato se si rileva un'eccezione.

Se non si verifica alcuna eccezione durante l'elaborazione del messaggio, la struttura ad albero e il contenuto ricevuti da un singolo nodo del flusso di messaggi vengono determinati dall'azione dei nodi precedenti nel flusso. Se si verifica un'eccezione nel flusso di messaggi, il contenuto delle quattro strutture ad albero dipende dai seguenti fattori:

  • Se l'eccezione viene restituita al nodo di input e il terminale Catch del nodo di input non è connesso, le strutture ad albero vengono eliminate. Se il messaggio si trova all'interno di una transazione, esso è restituito alla coda di input per un'ulteriore elaborazione. Quando il messaggio viene di nuovo elaborato, viene creata una nuova struttura ad albero. Se il messaggio non si trova all'interno di una transazione, viene eliminato.
  • Se l'eccezione è restituita al nodo di input e il terminale Catch è connesso, le strutture ad albero dei messaggi e dell'ambiente locale create originariamente dal nodo di input e trasmesse attraverso il terminale Out, vengono ripristinate e tutti gli aggiornamenti apportati al loro contenuto nei nodi che seguivano il nodo di input vengono persi. La struttura ad albero dell'ambiente non viene ripristinata e il relativo contenuto viene mantenuto. Se i nodi successivi al nodo di input includono un nodo Compute che crea un nuovo ambiente locale o una struttura ad albero del messaggio, tali strutture ad albero vengono perse. La struttura ad albero dell'elenco di eccezioni riporta una o più eccezioni che sono state registrate.
  • Se l'eccezione viene rilevata nel flusso di messaggi da un nodo TryCatch , le strutture ad albero del messaggio e dell'ambiente locale precedentemente propagate tramite il terminale Try del nodo TryCatch vengono ripristinate e trasmesse tramite il terminale Catch. Tutti gli aggiornamenti apportati al loro contenuto nei nodi che hanno seguito il nodo TryCatch vengono persi. La struttura ad albero dell'ambiente non viene ripristinata e il relativo contenuto viene mantenuto. Se i nodi che seguono il nodo TryCatch includono un nodo Compute che crea un nuovo ambiente locale o una nuova struttura ad albero del messaggio, tali strutture ad albero vengono perse. La struttura ad albero dell'elenco di eccezioni riporta una o più eccezioni che sono state registrate.

Percorsi di gestione eccezioni in un flusso di messaggi

I percorsi di gestione delle eccezioni iniziano da un terminale di errore (la maggior parte dei nodi di elaborazione dei messaggi li ha), dal terminale Catch di un nodo di input, da un nodo TryCatch o da un nodo AggregateReply , ma in linea di principio non sono diversi da un normale percorso del flusso di messaggi. Tale flusso consiste in una sequenza di nodi connessi reciprocamente da colui che ha progettato il flusso di messaggi. I percorsi di gestione eccezioni si differenziano nel tipo di elaborazione che eseguono per registrare o reagire all'eccezione. Ad esempio, essi potrebbero esaminare l'elenco di eccezioni per stabilire la natura dell'errore e intraprendere l'azione appropriata o registrare i dati dal messaggio o dall'eccezione.

Le strutture ad albero dei messaggi e dell'ambiente locale che sono trasmesse al percorso del flusso di messaggi di gestione eccezioni sono quelle all'inizio del percorso dell'eccezione, non quelle nel punto in cui viene generata l'eccezione. La seguente figura illustra questo punto:

Il diagramma mostra un estratto di un flusso di messaggi, descritto nel seguente testo
  • Un messaggio (M1) e un ambiente locale (L1) vengono elaborati da un flusso di messaggi. Vengono passati attraverso il nodo TryCatch a Compute1.
  • Compute1 aggiorna il messaggio e l'ambiente locale e trasmette un nuovo messaggio (M2) e ambiente locale (L2) al nodo successivo, Compute2.
  • Viene generata un'eccezione in Compute2. Se il terminale failure di Compute2 non è connesso (punto B), l'eccezione viene trasmessa al nodo TryCatch , ma il messaggio e l'ambiente locale non lo sono. Il percorso di gestione eccezioni che inizia sul punto A ha accesso al primo messaggio e ambiente locale, M1 e L1. Anche la struttura ad albero dell'ambiente è disponibile e conserva il contenuto che aveva prima che si verificasse l'eccezione.
  • Se il terminale failure di Compute2 è connesso (punto B), il messaggio e l'ambiente locale, M2 e L2, sono trasmessi al nodo connesso a quel terminale failure. Anche la struttura ad albero dell'ambiente è disponibile e conserva il contenuto che aveva prima che si verificasse l'eccezione.