Ansicht
Dokumentation
ABAPCATCH_SYS - CATCH SYS
General Data in Customer Master SUBST_MERGE_LIST - merge external lists to one complete list with #if... logic for R3upDiese Dokumentation steht unter dem Copyright der SAP AG.
CATCH SYSTEM-EXCEPTIONS
CATCH SYSTEM-EXCEPTIONS $[exc1 = n1 exc2 = n2...$]
$[OTHERS = n_others$].
$[statement_block$]
ENDCATCH.
Wirkung
Behandlung abfangbarer Laufzeitfehler. Die Anweisung CATCH SYSTEM-EXCEPTIONS leitet eine Kontrollstruktur ein, die einen Anweisungsblock statement_block enthält, der immer durchlaufen wird. In der Liste exc1 = n1 exc2 = n2 ... können in beliebiger Reihenfolge abfangbare Laufzeitfehler und Ausnahmegruppen aufgeführt werden, denen jeweils eine direkt angegebene Zahl n1 n2 ... zugeordnet werden muss.
Der Zusatz OTHERS kann alleine oder hinter der Liste exc1 = n1 exc2 = n2 ... aufgeführt werden. Es wirkt wie die Angabe einer Ausnahmegruppe, die sämtliche abfangbaren Laufzeitfehler des Laufzeit-Frameworks umfasst.
Das System behandelt die CATCH-Kontrollstruktur wie folgt:
- Wenn in dem Anweisungsblock statement_block einer der angegebenen abfangbaren Laufzeitfehler
bzw. ein in einer der angegebenen Ausnahmegruppen enthaltener abfangbarer Laufzeitfehler auftritt, wird
die Ausführung des Anweisungsblocks umgehend beendet, die Programmausführung hinter der
Anweisung ENDCATCH fortgesetzt und die dem abfangbaren Laufzeitfehler bzw. der Ausnahmegruppe
zugeordnete Zahl n1 n2 ... im Systemfeld sy-subrc zur Auswertung abgelegt. Wenn in der
Liste sowohl ein abfangbarer Laufzeitfehler als auch seine Ausnahmegruppe aufgeführt sind oder
wenn ein abfangbarer Laufzeitfehler in mehreren der angegebenen Ausnahmegruppen vorkommt, enthält sy-subrc die zugeordnete Zahl der ersten Position in der Liste.
- Tritt in dem Anweisungsblock ein abfangbarer Laufzeitfehler auf, der nicht in der Anweisung CATCH
SYSTEM-EXCEPTIONS aufgeführt bzw. in keiner der angegebenen Ausnahmegruppen enthalten ist, kommt es zum Programmabbruch mit
Kurzdump.
- Wenn das Ende des Anweisungsblocks erreicht wird, ohne dass ein Laufzeitfehler auftritt, wird sy-subrc auf 0 gesetzt.
Eine CATCH-Kontrollstruktur kann nicht im gleichen
Verarbeitungsblock
definiert werden, in dem klassenbasierte Ausnahmen in einer TRY-Kontrollstruktur
behandelt oder mit der Anweisung RAISE
EXCEPTION bzw. mit dem Zusatz THROW in einem
bedingten Ausdruck ausgelöst werden.
Hinweise
- Abfangbare Laufzeitfehler werden nicht aus aufgerufenen Prozeduren an den Aufrufer weitergereicht. Sie können nur innerhalb eines Verarbeitungsblocks abgefangen werden. Innerhalb eines Verarbeitungsblocks werden abfangbare Laufzeitfehler in beliebig tief geschachtelten Kontrollstrukturen abgefangen. Wenn mehrere CATCH -Kontrollstrukturen geschachtelt sind, verzweigt das System hinter die ENDCATCH-Anweisung der innersten CATCH-Kontrollstruktur, die den Laufzeitfehler behandelt.
- Die Behandlung abfangbarer Laufzeitfehler mit CATCH SYSTEM-EXCEPTIONS ist obsolet und sollte
durch eine TRY-Kontrollstruktur ersetzt werden.
Da allen abfangbaren Laufzeitfehlern klassenbasierte Ausnahmen zugeordnet wurden ist dies ohne Einschränkung
möglich. Neben der Verwendung einer TRY-Kontrollstruktur können die klassenbasierten Ausnahmen auch über RAISING aus einer Prozedur herausgereicht werden.
Beispiel
Abfangen aller möglichen abfangbaren Laufzeitfehler in einem Anweisungsblock. Abfangbare Laufzeitfehler
der Ausnahmegruppe ARITHMETIC_ERRORS setzen sy-subrc auf 4, alle anderen abfangbaren Laufzeitfehler
setzen sy-subrc auf 8. Speziell eine Division durch 0 führt zum abfangbaren Laufzeitfehler
COMPUTE_INT_ZERODIVIDE, der in der Ausnahmegruppe ARITHMETIC_ERRORS enthalten ist, wodurch sy-subrc ebenfalls auf 4 gesetzt wird.
SUBST_MERGE_LIST - merge external lists to one complete list with #if... logic for R3up General Data in Customer Master
Diese Dokumentation steht unter dem Copyright der SAP AG.
Length: 5554 Date: 20240329 Time: 021759 sap01-206 ( 130 ms )