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 eine Datenbank-E/A oder Datei-E/A auftritt. Wenn vgVar.handlHardIOErrors auf '0' festgelegt ist und kein try-Block vorhanden ist, wird das Programm im Falle eines permanenten E/A-Fehlers für eine Datenbank-E/A oder Datei-E/A beendet. Der Standardwert für vgVar.handleHardIOErrors ist '1', Sie können jedoch die Programmeigenschaft handleHardIOErrors auf 'NO' setzen, um den Standardwert '0' festzulegen, der auch der Standardwert in VisualAge Generator war.

Feedback