Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

Ausnahmesituationen und Ausnahmezustände

&pagelevel(3)&pagelevel

Eine Ausnahmesituation kann zur Laufzeit als Abweichung zur normalen Ausführung einer COBOL-Anweisung auftreten.
Um auf eine Ausnahmesituation in einem Programm bzw. einer Methode gezielt reagieren zu können, gibt es neben der Angabe von expliziten Klauseln (z. B. SIZE ERROR-Angabe) und der Abfrage von Ein- und Ausgabezuständen bei der Dateibearbeitung für einige Ausnahmesituationen die Möglichkeit, Ausnahmezustände auszulösen und diese in USE-Prozeduren zu behandeln. Diesen Ausnahmesituationen sind Ausnahmesituationsnamen zugeordnet, durch die sie angesprochen werden können. Eine Aufstellung dieser Namen befindet sich in Tabelle 45.
Um für eine aufgetretene Ausnahmesituation den zugehörigen Ausnahmezustand auszulösen, muss deren Überprüfung durch die >>TURN-Direktive eingeschaltet sein.

Ist für eine Ausnahmesituation die Überprüfung eingeschaltet, gleichzeitig aber eine Klausel (ohne NOT) angegeben, mit der die Ausnahmesituation behandelt werden kann (z.B. INVOKE ... ON EXCEPTION für EC-OO-NULL), so hat die Klausel Vorrang, d.h. die Ausnahmesituation wird zwar (aufgrund der Klausel) überprüft, der zugehörige Ausnahmezustand wird aber nicht ausgelöst.

Zusätzlich können Ausnahmezustände direkt durch die RAISE-Anweisung ausgelöst werden.

Wird ein Ausnahmezustand ausgelöst, so wird der letzte Ausnahmezustand aktualisiert. Dieser gilt für die gesamte Ablaufeinheit solange, bis ein neuer Ausnahmezustand ausgelöst wird oder die Anweisung SET LAST EXCEPTION TO OFF ausgeführt wird. Der zugehörige Name kann über die Funktion EXCEPTION-STATUS abgefragt werden.
Der weitere Ablauf hängt von der Schwere (Kategorie) der Ausnahmesituation ab. Ausnahmesituationen sind entweder FATAL oder NON-FATAL.

Auslösen einer FATAL Ausnahmesituation

  1. Ist für die Ausnahmesituation eine USE-Prozedur angegeben, so wird diese aktiviert.

  2. Wird das Ende der USE-Prozedur erreicht, ohne dass die USE-Prozedur zuvor explizit verlassen wurde, so wird der Programmablauf abgebrochen.

  3. Ist keine USE-Prozedur angegeben, so wird der Programmablauf abgebrochen.

Auslösen einer NON-FATAL Ausnahmesituation

  1. Ist für die Ausnahmesituation eine USE-Prozedur angegeben, so wird diese aktiviert.

  2. Wird das Ende der USE-Prozedur erreicht, ohne dass die USE-Prozedur zuvor explizit verlassen wurde, so wird der Programmlauf abgebrochen.

  3. Ist keine USE-Prozedur angegeben, so wird der Programmlauf fortgesetzt, als wäre die Überprüfung der Ausnahmesituation nicht eingeschaltet.

Ausnahmesituationsname

Die folgende Tabelle enthält eine Aufstellung der Ausnahmesituationsnamen, die von der aktuellen Compiler-Version unterstützt werden.

Bedeutung der einzelnen Spalten

Name:

Name der Ausnahmesituationen.

Kat:

Kategorie der Ausnahmesituation: Fatal, Non-Fatal (NF).

Kurzbeschreibung:

Umstand, unter dem die Ausnahmesituation auftritt

Klauseln:

Die Behandlung der Ausnahmesituation ist durch die angegebenen Klauseln möglich.

Name

Kat

Kurzbeschreibung

Klauseln

EC-DATA-CONVERSION

NF

Ersatzzeichen bei Konvertierung

-

EC-OO-CONFORMANCE

Fatal

Fehler bei Objektsicht

-

EC-OO-METHOD

Fatal

Methode nicht gefunden

ON EXCEPTION

EC-OO-NULL

Fatal

Aufruf einer Methode mit einer NULL-Objektreferenz

ON EXCEPTION

EC-OO-RESOURCE

Fatal

Nicht genügend Speicherplatz verfügbar, um ein Objekt zu erzeugen

-

EC-OO-UNIVERSAL

Fatal

Konformitätsregeln bei Methodenaufruf über universelle Objektreferenz sind nicht erfüllt

ON EXCEPTION

EC-STORAGE-NOT-ALLOC

NF

Zeiger in der FREE-Anweisung zeigt nicht auf einen durch ALLOCATE zugewiesenen Speicherbereich

-

EC-STORAGE-NOT-AVAIL

NF

Der in einer ALLOCATE-Anweisung angeforderte Speicherplatz ist nicht verfügbar

-

EC-XML-CODESET-CONVERSION

NF

Ersatzzeichen bei Konvertierung eines XML-Dokuments

-

Tabelle 45: Ausnahmesituationsnamen