Zum Hauptinhalt springen

Fehlerbehandlung (Try/Catch)-Transferobjekt

Mit dem Transferobjekt „Fehlerbehandlung (Try/Catch)" fangen Sie Fehler eines Teilablaufs ab, statt den gesamten Flow fehlschlagen zu lassen. Der abzusichernde Teilablauf liegt im TRY-Zweig. Schlägt er fehl, kann der Aufruf automatisch wiederholt werden; nach dem endgültigen Fehlschlag läuft der optionale CATCH-Zweig und erhält die Fehlerinformationen. Beide Zweige sind Unterabläufe, die exklusiv zu diesem Transferobjekt gehören.

Typische Anwendungsfälle sind Zugriffe auf zeitweise nicht erreichbare Systeme (Datenbank, REST-Endpunkt, SPS), die nach kurzer Wartezeit erneut versucht und im Fehlerfall protokolliert oder durch Ersatzwerte abgefangen werden sollen.

Erstellen Sie das Objekt innerhalb des Flows wie beschrieben und öffnen Sie den Editor per Doppelklick.

Editor des Fehlerbehandlung (Try/Catch)-Transferobjekts mit aktivierter Wiederholung, den Wiederholungs-Eigenschaften und dem Reiter „Eingänge"

Eigenschaften

Im oberen Bereich des Editors konfigurieren Sie die Wiederholung, darunter den Kontrakt der Zweige in den Reitern Eingänge, Ausgänge und Variablen.

Wiederholung (Retry)

Die Wiederholung ist standardmäßig ausgeschaltet. Ist sie aktiv, wird ein fehlgeschlagener TRY-Aufruf bis zur eingestellten Anzahl wiederholt; erst nach dem endgültigen Fehlschlag greift der CATCH-Zweig.

EigenschaftBeschreibung
WiederholungSchaltet die automatische Wiederholung fehlgeschlagener TRY-Aufrufe ein. Die übrigen Wiederholungs-Eigenschaften sind nur dann bearbeitbar.
Maximale WiederholungenAnzahl der Wiederholungen zusätzlich zum ersten Versuch: 1 bis 4, also höchstens 5 Versuche. Standard: 3.
Wartezeit zwischen VersuchenZeitspanne zwischen zwei Versuchen. Standard: 1 Sekunde.
Steigerung der WartezeitKonstant: vor jeder Wiederholung die eingestellte Wartezeit. Linear: die Wartezeit wächst mit jeder Wiederholung um den eingestellten Wert (1 s, 2 s, 3 s …). Exponentiell: die Wartezeit verdoppelt sich mit jeder Wiederholung (1 s, 2 s, 4 s …).
Zufällige Streuung (Jitter)Verändert jede Wartezeit zufällig, damit mehrere Flows ihre Wiederholungen nicht gleichzeitig starten und das Zielsystem gleichmäßiger belasten.
CATCH-AusführungNur beim endgültigen Fehlschlag (Standard): Der CATCH-Zweig läuft einmal, nachdem alle Versuche fehlgeschlagen sind. Bei jedem fehlgeschlagenen Versuch: Der CATCH-Zweig läuft nach jedem fehlgeschlagenen Versuch, z. B. um jeden Fehlversuch zu protokollieren; der Eingang CatchAttempt nennt den auslösenden Versuch. Ohne Wiederholung läuft der CATCH-Zweig immer genau einmal.
warnung

Eine Wiederholung führt den kompletten TRY-Zweig erneut aus – auch die Schritte, die vor dem Fehler bereits erfolgreich waren. Aktivieren Sie die Wiederholung nur für Abläufe, die mehrfach ausgeführt werden dürfen (idempotente Abläufe), sonst drohen z. B. doppelte Schreibvorgänge.

Reiter „Eingänge"

EigenschaftBeschreibung
EingängeListe der Eingangswerte (Name + Datentyp). Jeder Eingang erscheint als verdrahtbares Item am Objekt und wird an beide Zweige übergeben; dort steht er als Ausgang des Scope-Eingangs bereit.

Die Namen der reservierten Ein- und Ausgänge (TryAttempt, CatchError, Succeeded …) können nicht als eigene Ein- oder Ausgänge deklariert werden.

Reiter „Ausgänge"

EigenschaftBeschreibung
AusgängeListe der Rückgabewerte (Name + Datentyp). Jeder Ausgang erscheint als Item am Objekt und erhält seinen Wert aus der Scope-Rückgabe des Zweigs, der das Ergebnis geliefert hat (TRY oder CATCH).
StandardwertOptionaler Wert pro Ausgang. Er greift, wenn der gelaufene Zweig keinen Wert liefert – oder für alle Ausgänge, wenn der TRY-Zweig endgültig fehlschlägt und kein CATCH-Zweig existiert. Liefert der gelaufene Zweig keinen Wert und ist kein Standardwert hinterlegt, schlägt der Transfer fehl.

Status-Ausgänge

Zusätzlich zu den deklarierten Ausgängen trägt das Objekt vier feste Status-Ausgänge, über die nachfolgende Transferobjekte auf das Ergebnis reagieren können:

AusgangBedeutung
SucceededWahrheitswert: true, wenn der TRY-Zweig – ggf. nach Wiederholungen – erfolgreich war.
AttemptCountZahl der ausgeführten TRY-Versuche.
RecoveredWahrheitswert: true, wenn der TRY-Zweig endgültig fehlgeschlagen ist und der CATCH-Zweig den Fehler behandelt hat.
LastErrorMessageFehlermeldung des letzten fehlgeschlagenen TRY-Versuchs; leer, wenn der TRY-Zweig erfolgreich war.

Reiter „Variablen"

Deklaration der Scope-Variablen beider Zweige (Name, Datentyp, Standardwert) sowie deren Belegung: statischer Wert oder verdrahteter Eingang (leerer statischer Wert erzeugt ein verdrahtbares Item „TryCatch Variable Inputs").

Die Variablen werden auf beide Zweige synchronisiert. Auch eine direkt im Zweig-Designer angelegte Variable wird automatisch in das Transferobjekt und den jeweils anderen Zweig übernommen.

Zweige

Die Zweige werden direkt am Diagramm-Knoten des Objekts verwaltet: Die Aktionsleiste zeigt TRY erstellen bzw. TRY öffnen (analog für CATCH). Das Erstellen legt den Unterablauf an und verknüpft ihn sofort mit dem Objekt; das Öffnen wechselt in einen neuen Reiter, der aktuelle Reiter bleibt geöffnet.

Fehlerbehandlung (Try/Catch)-Knoten im Flow mit der Aktionsleiste „TRY öffnen" und „CATCH öffnen" sowie den Items für Eingänge, Ausgänge und Status-Ausgänge

ZweigBeschreibung
TRY-ZweigPflicht. Enthält den abzusichernden Ablauf und wird bei jeder Ausführung aufgerufen.
CATCH-ZweigOptional. Läuft nach dem endgültigen Fehlschlag des TRY-Zweigs (bzw. je nach CATCH-Ausführung nach jedem Fehlversuch), z. B. um den Fehler zu protokollieren, eine Benachrichtigung zu senden oder Ersatzwerte zu liefern. Ohne CATCH-Zweig wird der Fehlschlag verschluckt und die Standardwerte der Ausgänge werden angewendet.

TRY und CATCH teilen sich die deklarierten Ein- und Ausgänge. Ein Ein- oder Ausgang, den Sie direkt in einem Zweig am Scope-Eingang bzw. an der Scope-Rückgabe anlegen, umbenennen oder löschen, wird in das Transferobjekt und den anderen Zweig übernommen.

Reservierte Ein- und Ausgänge der Zweige

Neben den deklarierten Eingängen stellt der Scope-Eingang jedes Zweigs automatisch reservierte Eingänge bereit:

ZweigEingangBedeutung
TRYTryAttemptNummer des aktuellen Versuchs (1 = erster Aufruf, 2 = erste Wiederholung …). Damit kann der TRY-Zweig bei einer Wiederholung anders reagieren als beim ersten Aufruf.
CATCHCatchErrorFehlermeldung des fehlgeschlagenen TRY-Versuchs.
CATCHCatchFailedStepSchrittnummer des Transferobjekts im TRY-Zweig, an dem der Fehler auftrat (Nummer aus dem Designer). Leer, wenn der Fehler keinem Transferobjekt zuzuordnen ist, z. B. bei überschrittenem Zeitlimit.
CATCHCatchFailedTransferObjectBezeichnung des Transferobjekts, das den Fehler ausgelöst hat (Name der verwendeten Plug-in-Instanz). Leer, wenn der Fehler keinem Transferobjekt zuzuordnen ist.
CATCHCatchAttemptNummer des fehlgeschlagenen TRY-Versuchs, der diesen CATCH-Aufruf ausgelöst hat.
CATCHdeklarierte AusgängeJeder deklarierte Ausgang steht im CATCH-Zweig zusätzlich als Eingang bereit und enthält den Wert, den der TRY-Zweig bis zum Fehler bereits zurückgegeben hat; ohne Wert bleibt er leer.

Im Scope-Eingang des CATCH-Zweigs werden diese Einträge in einer eigenen, schreibgeschützten Liste geführt; sie lassen sich dort weder umbenennen noch löschen.

Zweige reparieren

Erkennt der Editor Probleme an den Zweigen (z. B. nach externen Änderungen an den Projektdateien), listet er sie in einem Hinweis unterhalb der Reiter auf und bietet zwei Aktionen an: Zweige reparieren stellt Metadaten, fehlende Scope-Brücken und Variablen der referenzierten Zweige wieder her; Nicht referenzierte Zweige löschen entfernt Zweige, die zu diesem Transferobjekt gehören, aber nicht mehr als TRY- oder CATCH-Zweig referenziert sind (nur sichtbar, wenn solche Zweige existieren).

Verhalten zur Laufzeit

SituationVerhalten
TRY erfolgreichDie Rückgabewerte des TRY-Zweigs stehen an den Ausgängen; Succeeded = true, Recovered = false. Ein vorhandener CATCH-Zweig wird als „Übersprungen" vermerkt.
TRY fehlgeschlagen, Wiederholung aktivDer TRY-Zweig wird nach der Wartezeit erneut aufgerufen, bis ein Versuch gelingt oder die maximale Anzahl erreicht ist. AttemptCount nennt die Anzahl der Versuche.
TRY endgültig fehlgeschlagen, CATCH vorhandenDer CATCH-Zweig läuft mit dem Fehlerkontext; seine Rückgabewerte stehen an den Ausgängen. Der Transfer ist erfolgreich; Succeeded = false, Recovered = true, LastErrorMessage enthält den Fehler.
TRY endgültig fehlgeschlagen, kein CATCHDer Fehler wird verschluckt; die Standardwerte der Ausgänge werden angewendet, Ausgänge ohne Standardwert bleiben leer. Der Transfer ist erfolgreich; Succeeded = false, Recovered = false.
Fehler im CATCH-ZweigDer Transfer des Flows schlägt fehl; die Statusdetails nennen den Zweig und die fehlgeschlagene Stelle.
Zeitlimit überschrittenLäuft ein Zweig länger als das Zeitlimit von 30 Sekunden, gilt der Aufruf als fehlgeschlagen – beim TRY-Zweig also als fehlgeschlagener Versuch. CatchFailedStep und CatchFailedTransferObject bleiben in diesem Fall leer.

Ein vom CATCH-Zweig behandelter oder ohne CATCH-Zweig verschluckter Fehler lässt den Flow nicht fehlschlagen – der Transfer bleibt grün. Werten Sie die Status-Ausgänge aus, wenn nachfolgende Schritte auf den Fehlerfall reagieren sollen. Bei aktivierter Wiederholung wartet der Flow an diesem Objekt, bis alle Versuche einschließlich der Wartezeiten abgeschlossen sind.

Wie die einzelnen Versuche in der Statusansicht dargestellt und geöffnet werden, beschreibt Veröffentlichen und Status.

Kopieren und Löschen

  • Wird das Transferobjekt einzeln kopiert und eingefügt, erhält die Kopie keine Zweige – sie teilt niemals die Zweige des Originals.
  • Wird der gesamte Flow kopiert, exportiert oder importiert, wandern die Zweige mit und werden automatisch neu verknüpft.
  • Wird der Flow gelöscht, werden seine Zweige mitgelöscht.