Ansicht
Dokumentation

ABAPCATCH_SYS - CATCH SYS

ABAPCATCH_SYS - CATCH SYS

General Data in Customer Master   SUBST_MERGE_LIST - merge external lists to one complete list with #if... logic for R3up  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

CATCH SYSTEM-EXCEPTIONS

Kurzreferenz



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 )