Show TOC Anfang des Inhaltsbereichs

Funktionsdokumentation Klassenbasierte Ausnahmen  Dokument im Navigationsbaum lokalisieren

Verwendung

Klassenbasierte Ausnahmen werden als Instanzen von Ausnahmeklassen realisiert. Ausnahmeklassen sind entweder global im System vordefiniert oder können vom Benutzer global oder lokal definiert werden. Klassenbasierte Ausnahmen werden entweder von der ABAP-Laufzeitumgebung oder von einem Programm ausgelöst.

Funktionsumfang

Klassenbasierte Ausnahmen werden für Ausnamesituationen verwendet, die vom System erkannt werden und deren Ursachen in den vom Programmauslöser vordefinierten klassenbasierten Ausnahmen behandelt werden können. Dies geschieht besonders in Situationen, in denen abfangbare Laufzeitfehler vor der Einführung von klassenbasierten Ausnahmen ausgelöst wurden.

Die Ausnahmen von allen Ausnahmeklassen, die in einem Programm sichtbar sind, können über ein RAISE EXCEPTION ausgelöst werden.

Klassenbasierte Ausnahmen können in der Schnittstelle von Prozeduren deklariert werden. Für lokale Prozeduren verwenden Sie den Zusatz RAISING der Anweisungen METHODS und FORM. Im Class und Function Builder wählen Sie Ausnahmeklassen, wenn Sie Ausnahmen in der Schnittstelle definieren. Die deklarierten Ausnahmen können an der Aufrufstelle einer Prozedur auftreten, wenn die Ausnahme nicht in der Prozedur behandelt wird.

Wird eine Ausnahme ausgelöst, wird ein Ausnahmeobjekt angelegt, dessen Attribute Informationen über die Fehlersituation enthalten. Eine klassenbasierte Ausnahme kann in einer TRY-Kontrollstruktur behandelt werden. Innerhalb von TRY ist ein geschützter Bereich definiert, dessen Ausnahmen in nachfolgenden CATCH-Blöcken behandelt werden können. Die Anweisung RETRY ermöglicht es Ihnen, einen vollständigen TRY-Block nach einer Ausnahme zu wiederholen.

Da alle Ausnahmeklassen Unterklassen von gemeinsamen Oberklassen sind, können die verwandten Ausnahmen ebenfalls behandelt werden, indem die entsprechende Oberklasse behandelt wird. Das System propagiert das Ausnahmeobjekt oder die klassenbasierte Ausnahme, bis die Ausnahme behandelt oder eine Schnittstelle missachtet wird.

Es wird zwischen zwei Fällen von Ausnahmebehandlung unterschieden:

      Der Kontext, in dem die Ausnahme ausgelöst wurde, wird vollständig vor oder nach der Handhabung gelöscht. Dadurch werden alle Prozeduren vom Speicher entfernt - einschließlich ihre lokalen Daten, die vom Behandler-Kontext aufgerufen wurden und die die Ausnahme verursachten. Die Handhabung wird abhängig von der Art der Beendigung des Behandlers fortgesetzt.

      Der Kontext, in dem die Ausnahme ausgelöst wurde, bleibt erhalten und das Programm wird nach der Anweisung, die die Ausnahme ausgelöst hat, fortgesetzt.

Hinweis

Eine Voraussetzung für den zweiten Fall sind Ausnahmen, die wiederaufgenommen werden können. Diese Ausnahmen müssen mit dem Zusatz RESUMABLE der Anweisung RAISE EXCEPTION ausgelöst werden und mithilfe des Zusatzes RESUMABLE in der Schnittstelle der Prozeduren, von der aus sie propagiert wurden, deklariert werden. Die Anweisung RESUME wird für die Fortsetzung des Programms verwendet.

Weitere Informationen hierzu finden Sie in der ABAP-Schlüsselwortdokumentation unter Class-based Exceptions.

 

Ende des Inhaltsbereichs