ABAPCATCH_SYS - CATCH SYS
General Material Data CPI1466 during BackupDiese Dokumentation steht unter dem Copyright der SAP AG.
CATCH SYSTEM-EXCEPTIONS
Obsolete Syntax
CATCH SYSTEM-EXCEPTIONS [exc1 = n1 exc2 = n2 ...]
[OTHERS = n_others].
[statement_block]
ENDCATCH.
Wirkung
Die Anweisung CATCH SYSTEM-EXCEPTIONS leitet eine Kontrollstruktur ein, die einen Anweisungsblockstatement_block enthält, der immer durchlaufen wird. In der Liste exc1 = n1 exc2 = n2 ... können in beliebiger Reihenfolgeabfangbare Laufzeitfehler undAusnahmegruppenaufgeführt werden, denen jeweils ein Zahlenliteral n1 n2 ... zugeordnet werden muss.
Der Zusatz OTHERS kann alleine oder hinter der Liste exc1 = n1 exc2 = n2 ... aufgeführtwerden. Es wirkt wie die Angabe einer Ausnahmegruppe, die sämtliche abfangbaren Laufzeitfehler der Laufzeitumgebung umfasst.
Das System behandelt die CATCH-Kontrollstruktur wie folgt:
- Wenn in dem Anweisungsblock statement_block einer der angegebenen abfangbaren Laufzeitfehlerbzw. ein in einer der angegebenen Ausnahmegruppen enthaltener abfangbarer Laufzeitfehler auftritt, wirddie Ausführung des Anweisungsblocks umgehend beendet, die Programmausführung hinter derAnweisung ENDCATCH fortgesetzt und die dem abfangbaren Laufzeitfehler bzw. der Ausnahmegruppezugeordnete Zahl n1 n2 ... im Systemfeld sy-subrc zur Auswertung abgelegt. Wenn in derListe sowohl ein abfangbarer Laufzeitfehler als auch seine Ausnahmegruppe aufgeführt sind oderwenn 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 mitKurzdump.
- Wenn das Ende des Anweisungsblocks erreicht wird, ohne dass ein Laufzeitfehler auftritt, wird sy-subrc auf 0 gesetzt.
Eine CATCH-Kontrollstruktur kann nicht im gleichenVerarbeitungsblockdefiniert werden, in dem klassenbasierte Ausnahmen in einer TRY-Kontrollstrukturbehandelt oder mit der Anweisung RAISE EXCEPTION ausgelöst werden.
Hinweise
- Abfangbare Laufzeitfehler werden nicht aus aufgerufenenProzedurenan den Aufrufer weitergereicht. Sie können nur innerhalb eines Verarbeitungsblocks abgefangenwerden. Innerhalb eines Verarbeitungsblocks werden abfangbare Laufzeitfehler in beliebig tief geschachteltenKontrollstrukturen abgefangen. Wenn mehrere CATCH -Kontrollstrukturen geschachtelt sind, verzweigtdas System hinter die ENDCATCH-Anweisung der innersten CATCH-Kontrollstruktur, die den Laufzeitfehler behandelt.
- Die Behandlung abfangbarer Laufzeitfehler mit CATCH SYSTEM-EXCEPTIONS ist obsolet und solltedurch eine TRY-Kontrollstrukturersetzt werden. Da allen abfangbaren Laufzeitfehlern klassenbasierte Ausnahmen zugeordnet wurden istdies ohne Einschränkung möglich. Insbesondere können die Ausnahmen durch die Verwendung einer TRY-Kontrollstruktur aus Prozeduren weitergereicht werden.
Beispiel
Abfangen aller möglichen abfangbaren Laufzeitfehler in einem Anweisungsblock. Abfangbare Laufzeitfehlerder Ausnahmegruppe ARITHMETIC_ERRORS setzen sy-subrc auf 4, alle anderen abfangbaren Laufzeitfehlersetzen sy-subrc auf 8. Speziell eine Division durch 0 führt zum abfangbaren LaufzeitfehlerCOMPUTE_INT_ZERODIVIDE, der in der Ausnahmegruppe ARITHMETIC_ERRORS enthalten ist, wodurch sy-subrc ebenfalls auf 4 gesetzt wird.
DATA: result TYPE i,
number TYPE i.
CATCH SYSTEM-EXCEPTIONS arithmetic_errors = 4
OTHERS = 8.
...
result = 1 / number.
...
ENDCATCH.
IF sy-subrc <> 0.
...
ENDIF.
General Data in Customer Master ABAP Short Reference
Diese Dokumentation steht unter dem Copyright der SAP AG.
Length: 5714 Date: 20120526 Time: 191734 triton ( 217 ms )






