try

Die EGL-Anweisung 'try' markiert den Anfang eines try-Blocks, der mit dem Begrenzer 'end' endet. Die Anweisung 'try' sorgt dafür, dass ein Programm weiterhin ausgeführt wird, selbst wenn eine der folgenden Anweisungen innerhalb des try-Blocks in einem Fehler resultiert:

Die Anweisung 'try' ermöglicht es Ihnen, die Ergebnisse beliebiger Ausnahmebedingungen festzulegen, die Ihr Code eventuell feststellt, von geringfügigen Problemen wie beispielsweise 'Dateiende' oder 'Datensatz nicht gefunden', bis hin zu schwerwiegenderen Problemen wie beispielsweise permanenten E/A-Fehlern. Wenn eine Ausnahmebedingung eintritt, wird die Verarbeitung bei der ersten Anweisung in einem onException-Block wiederaufgenommen, der dem Ausnahmebedingungstyp entspricht. Sie können den onException-Block auch übergehen, wenngleich es hierfür keinen stichhaltigen Grund gibt. Sollten Sie sich dennoch dafür entscheiden, wird die Ausführung bei der ersten Anweisung nach dem Ende des try-Blocks wiederaufgenommen.

Ein typischer try-Block enthält zwei Gruppen von Anweisungen:

Ausnahmebedingungen werden vom Fehlerpunkt ausgehend nach oben weitergegeben. Eine try-Anweisung kann Ausnahmebedingungen bearbeiten, die in beliebigen Funktionen auftreten, die über den try-Block aufgerufen werden, unabhängig davon, wie tief diese Funktionen verschachtelt sind. Nachdem eine Ausnahmebedingung ausgelöst wird, erhält der nächstliegende einschließende try-Block die Steuerung. Wird in einem onException-Block keine übereinstimmende Ausnahmebedingung gefunden, erhält der nächsthöhere einschließende try-Block die Steuerung. Werden keine weiteren try-Blöcke gefunden, erhält die nächste ausführbare Anweisung die Steuerung.

Weitere Informationen zum Prozess der Ausnahmebedingungsbehandlung finden Sie unter Ausnahmebedingungsbehandlung.

Syntax

Syntaxdiagramm für die Anweisung 'try'
Anweisung
Eine beliebige EGL-Anweisung.
Ausnahmedatensatzvariable
Eine Deklaration eines Datensatzes mit dem Stereotyp 'Exception' (Ausnahmebedingung). Informationen hierzu finden Sie unter 'Stereotyp 'Exception''. Diese Datensatzvariable enthält die Nachrichten-ID (messageID) und die Nachricht (message) sowie mögliche zusätzliche Felder für die Ausnahmebedingung, wenn der Datensatztyp dem Typ der Ausnahmebedingung entspricht.

Kompatibilität

Tabelle 1. Hinweise zur Kompatibilität für die Anweisung 'try'
Plattform Problem
DL/I-Datenbankzugriff Wenn entweder 'dliVar.handleHardDLIErrors' oder 'vgVar.handlHardIOErrors' auf 1 gesetzt ist, wird die Ausführung des Programms fortgesetzt, wenn ein permanenter E/A-Fehler in einem try-Block für ein DL/I-Segment auftritt. Wenn beide Systemvariablen auf 0 gesetzt sind oder kein try-Block vorhanden ist, wird das Programm im Falle eines permanenten E/A-Fehlers für ein DL/I-Segment beendet. 'dliVar.handleHardDLIErrors' hat keine Auswirkung auf serielle Datensätze, die IMS-Nachrichtenwarteschlangen oder GSAM-Dateien zugeordnet sind.
V60-Ausnahmebedingungskompatibilität
  • Sie können nur einen einzigen onException-Block in einem try-Block verwenden, und es kann kein Ausnahmebedingungstyp angegeben werden.
  • Mithilfe der Variablen 'sysLib.currentException' können Sie die Art des Problems bestimmen. Diese Variable ist nur im V6-Kompatibilitätsmodus verfügbar.
  • Ausnahmebedingungen werden nicht über die Grenzen des Abschnitts hinaus weitergegeben, in dem sie eintreten. Tritt ein Fehler innerhalb einer von einem try-Block aufgerufenen Funktion auf, wird die Ausnahmebedingung niemals an den betreffenden try-Block weitergegeben.
  • Permanente E/A-Fehler führen zur Beendigung der Anwendung, sofern Sie nicht die Programmeigenschaft 'handleHardIOErrors' auf YES setzen. In diesem Fall löst EGL eine Ausnahmebedingung aus, damit das Programm den permanenten E/A-Fehler selbst bearbeiten kann.
VisualAge Generator-Kompatibilitätsmodus Wenn 'vgVar.handlHardIOErrors' auf 1 gesetzt ist, wird die Ausführung des Programms fortgesetzt, wenn ein permanenter E/A-Fehler in einem try-Block für Datenbank- oder Datei-Ein-/Ausgabe auftritt. Ist 'vgVar.handlHardIOErrors' auf 0 gesetzt oder kein try-Block vorhanden, wird das Programm beim Auftreten eines permanenten E/A-Fehlers für Datenbank- oder Datei-Ein-/Ausgabe beendet. Der Standardwert für 'vgVar.handleHardIOErrors' ist 1. Sie haben jedoch die Möglichkeit, die Programmeigenschaft 'handleHardIOErrors' auf NO zu setzen, um 0 als Standardeinstellung bereitzustellen. Dies war die Standardeinstellung in VisualAge Generator.

Feedback