ABAPCATCH_TRY - CATCH TRY

General Material Data   BAL Application Log Documentation  
Diese Dokumentation steht unter dem Copyright der SAP AG.

CATCH

Kurzreferenz



Syntax

CATCH [BEFORE UNWIND] cx_class1 cx_class2 ... [INTO oref].

Zusätze:

1. ... BEFORE UNWIND

2. ... INTO oref

Wirkung

Einleitung eines CATCH-Blocks einer TRY-Kontrollstruktur, in dem Ausnahmen behandelt werden können.

Ein CATCH-Block ist ein Ausnahmebehandler, also die Programmlogik, die ausgeführt wird, wenn die zugehörige Ausnahme im TRY-Block der gleichen TRY-Kontrollstruktur auftritt.

Ein CATCH-Block behandelt die Ausnahmen der Ausnahmeklassen cx_class1 cx_class2 ..., diehinter der Anweisung CATCH angegeben sind, sowie die Ausnahmen der Unterklassen dieser Ausnahmeklassen.In jeder Anweisung CATCH einer TRY-Kontrollstruktur kann eine Liste beliebig vieler Ausnahmeklassencx_class1 cx_class2 ... aufgeführt werden, wobei speziellere Ausnahmeklassen (Unterklassen)vor allgemeineren Ausnahmeklassen (Oberklassen) aufgeführt werden müssen. Diese Reihenfolgemuss sowohl innerhalb einer CATCH-Anweisung als auch über mehrere CATCH-Anweisungen einer TRY-Kontrollstruktur hinweg eingehalten werden.

Hinweis

Die Vorschrift, dass bei CATCH spezielle vor allgemeinen Ausnahmeklassen aufgeführt werdenmüssen, stellt sicher, dass eine Ausnahme nicht von einem allgemeinen Ausnahmebehandler (Oberklasse) behandelt wird, wenn ein spezieller Behandler (Unterklasse) vorgesehen ist.

Zusatz 1

... BEFORE UNWIND

Wirkung

Wenn der Zusatz BEFORE UNWIND angegeben ist, wird der Kontext, in der die Ausnahme ausgelöstwurde inklusive aller aufgerufenen Prozeduren und deren lokalen Daten erst nach dem Verlassen des CATCH-Blocksgelöscht. Wenn der Zusatz nicht angegeben ist, wird der Kontext vor der Ausführung des CATCH-Blocks gelöscht.

Hinweise

  • Wenn der Zusatz BEFORE UNWIND angegeben ist, kann bei Behandlung einerwiederaufsetzbareAusnahme die Anweisung RESUMEim CATCH-Block verwendet werden, um die Verarbeitung hinter der Anweisung, welche die Ausnahmeausgelöst hat, wieder aufzusetzen. Dies ist der einzige Fall, in dem der Kontext der Ausnahme beim Verlassen des CATCH-Blocks nicht gelöscht wird.

  • Wiederaufsetzbare Ausnahmen können auch in CATCH-Blöcken ohne den Zusatz BEFOREUNWIND behandelt werden. In diesem Fall wird der Kontext der Ausnahme vor der Behandlung gelöscht und die Anweisung RESUME kann nicht angegeben werden.

  • Eventuelle CLEANUP-Blöckewerden immer direkt vor dem Abbau ihres Kontexts ausgeführt. D.h. bei Verwendung von BEFORE UNWIND nach der Ausnahmebehandlung und ansonsten davor.

  • Die Verwendung des Zusatzes BEFORE UNWIND zu CATCH ist zwar nur bei Verwendung der AnweisungRESUME vorgeschrieben,sie ist aber prinzipiell möglich, wenn während der Ausnahmebehandlung den Kontext derAusnahme ausgewertet werden soll bevor eventuelle Aufräumarbeiten in CLEANUP-Blöckenausgeführt werden. Dies ist z.B. bei der Behandlung von Ressourcenengpässen sinnvoll,wenn die Freigabe vonRessourcen< in CLEANUP-Blöcken den Kontext verändern und damitz.B. die Berechnung der noch freien Ressourcen im Ausnahmebehandler sinnlos machen. Außer fürProtokollzwecke ist es prinzipiell aber nicht empfohlen, den Teil des Kontexts auszuwerten, der nur lokal für die Implementierung der fehlerhaften Prozedur interessant ist.


Zusatz 2

... INTO oref

Wirkung

Wenn der Zusatz INTO angegeben ist, wird eine Referenz auf das Ausnahmeobjekt in orefabgelegt, wobei oref eine Objektreferenzvariable sein muss, deren statischer Typ allgemeineroder gleich der allgemeinsten der angegebenen Ausnahmeklassen sein muss. Über oref kann auf die Attribute und Methoden des Ausnahmeobjekts zugegriffen werden.


General Data in Customer Master   PERFORM Short Reference  
Diese Dokumentation steht unter dem Copyright der SAP AG.


Length: 5362 Date: 20120526 Time: 191759     triton ( 195 ms )