try
- Eine Ein-/Ausgabeanweisung (E/A)
- Ein Systemfunktionsaufruf
- Eine Anweisung 'call'
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.
- Die Anweisungen, für die Fehlerbedingungen bearbeitet werden sollen. Diese Anweisungen befinden sich zwischen dem Schlüsselwort 'try' und dem ersten Vorkommen des Schlüsselworts 'onException'. Treten in diesen Anweisungen keine Fehler auf, werden die Anweisungen in allen onException-Blöcken ignoriert.
- Anweisungen, die bei Auftreten eines Fehlers ausgeführt werden sollen. Diese Anweisungen befinden sich zwischen dem ersten Schlüsselwort 'onException' und dem Schlüsselwort 'end', das dem Anfangsschlüsselwort 'try' zugeordnet ist.
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

- 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
| 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 |
|
| 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. |