Sie können einen Nachrichtenfluss entwerfen, um Ausnahmen abzufangen, bevor sie an den Empfangsknoten geliefert werden. In einen einzelnen Nachrichtenfluss können Sie einen oder mehrere TryCatch-Knoten einfügen, um einen zentralen Fehlerpunkt (single point of failure) für eine Knotenfolge zur Verfügung zu stellen. Auf diese Weise können Sie eine sehr spezifische Fehlerbearbeitung und -behebung bereitstellen.
Ein TryCatch-Knoten verarbeitet eine Nachricht nicht, sondern ist nur einen Entscheidungspunkt in einem Nachrichtenfluss. Wenn der TryCatch-Knoten eine Nachricht empfängt, gibt er sie an das Try-Terminal weiter. Der Broker übergibt die Steuerung an die Knotenfolge, die mit diesem Terminal verbunden ist (d. h. an den Try-Datenfluss).
Wenn im Try-Datenfluss eine Ausnahme ausgelöst wird, gibt der Broker die Steuerung an den TryCatch-Knoten zurück. Der Knoten schreibt den aktuellen Inhalt der Ausnahmeliste (ExceptionList) in das lokale Fehlerprotokoll und anschließend die Informationen zu der aktuellen Ausnahme in die Ausnahmeliste, wobei die dort gespeicherten Informationen überschrieben werden.
Der Knoten gibt die Nachricht an die Knotenfolge weiter, die mit dem Abfangterminal verbunden ist (d. h. an den Abfangdatenfluss). Der Inhalt der weitergegebenen Nachrichtenbaumstruktur ist mit dem Inhalt identisch, der an das Try-Terminal weitergegeben wurde. Dabei handelt es sich um den Inhalt, den die Baumstruktur hatte, als sie zuerst vom TryCatch-Knoten empfangen wurde. Der Knoten erweitert die Baumstruktur um die neuen Ausnahmeinformationen, die er in die Ausnahmeliste geschrieben hat. Änderungen oder Hinzufügungen, die die Knoten im Try-Datenfluss vorgenommen haben, sind in der Nachrichtenbaumstruktur, die an den Abfangdatenfluss übergeben wird, nicht enthalten.
Wenn der Try-Datenfluss jedoch Verarbeitungsschritte ausgeführt hat, die Aktualisierungen von externen Datenbanken zur Folge haben, gehen diese nicht verloren. Die Aktualisierungen bleiben während der Verarbeitung der Nachricht durch den Abfangdatenfluss erhalten, und die Entscheidung, ob die Aktualisierungen festgeschrieben oder zurückgesetzt werden, wird bei der Konfiguration Ihres Nachrichtenflusses und der einzelnen Knoten, die mit den Datenbanken interagieren, getroffen. Wenn die Aktualisierungen auf Grund der von Ihnen vorgenommenen Konfiguration festgeschrieben werden, müssen Sie Ihren Abfangdatenfluss um eine Logik erweitern, mit der die durchgeführten Änderungen zurückgesetzt werden.
Der Abschnitt Knoten für koordinierte Nachrichtenflüsse konfigurieren enthält eine Erläuterung der Konfigurationsoptionen.
Der Broker gibt die Steuerung in folgenden Fällen an den nächsten Abfangpunkt im Nachrichtenfluss zurück (wobei es sich um einen anderen TryCatch-Knoten handeln kann, aber letztendlich immer um den Empfangsknoten):
Das folgende Beispiel zeigt, wie Sie den Datenfluss konfigurieren können, um Ausnahmen im Empfangsknoten abzufangen. Das Abfangterminal des MQEmpfangsknotens wird mit einem Traceknoten verbunden, um den Fehler aufzuzeichnen.
Im folgenden Beispiel enthält der Nachrichtenfluss zwei separate Verarbeitungsdatenflüsse, die mit den TRUE- und FALSE-Terminals des Filterknotens verbunden sind. In jeder der beiden Routen, die die Nachricht nehmen kann, befindet sich ein TryCatch-Knoten. Das Abfangterminal von beiden TryCatch-Terminals ist mit einem allgemeinen untergeordneten Fehlerverarbeitungsdatenfluss verbunden.
Wenn der Empfangsknoten in Ihrem Nachrichtenfluss kein Abfangterminal (z. B. einen Echtzeiteingabeknoten) enthält, aber im Nachrichtenfluss Fehler bearbeitet werden sollen, müssen Sie einen TryCatch-Knoten einfügen. Das folgende Beispiel zeigt, wie Sie eine Verbindung mit einem Datenfluss herstellen können, um diese Fehlerbearbeitung bereitzustellen. In diesem Beispiel könnten Sie die ESQL im Rechenknoten des Abfangdatenflusses konfigurieren, um die abgefangene Ausnahme auszuwerten und den Namen der Ausgabewarteschlange dynamisch festzulegen.