Anfang des Inhaltsbereichs

Übersicht über klassenbasierte Ausnahmen Dokument im Navigationsbaum lokalisieren

Die klassenbasierte Ausnahmebehandlung beruht auf Ausnahmeklassen. Ausnahmeklassen können mit dem Exception Builder der ABAP Workbench selbst definiert werden und es gibt eine Reihe vordefinierter Ausnahmeklassen. In einer Ausnahmesituation wird eine Ausnahme durch ein Ausnahmeobjekt, d.h. eine Instanz einer Ausnahmeklasse, repräsentiert. Die Attribute eines Ausnahmeobjekts können Informationen über die Fehlersituation enthalten. Alle Ausnahmeklassen sind Teile einer Vererbungshierarchie mit einer gemeinsamen Oberklasse CX_ROOT.

Die Verwendung klassenbasierter Ausnahmen ist nicht auf ABAP Objects beschränkt. Im Gegenteil sollen klassenbasierte Ausnahmen die vorhergehenden Konzepte ablösen. klassenbasierte Ausnahmen können also in allen ABAP-Kontexten (Programme, Verarbeitungsblöcke) ausgelöst und behandelt werden. Insbesondere sind alle bisherigen abfangbaren Laufzeitfehler als klassenbasierte Ausnahmen behandelbar.

Ausgelöst werden klassenbasierte Ausnahmen entweder durch die ABAP-Anweisung RAISE EXCEPTION oder durch die ABAP-Laufzeitumgebung. Tritt eine klassenbasierte Ausnahme auf, unterbricht das System den normalen Programmfluß und versucht zu einem passenden Behandler zu verzweigen. Falls kein Behandler gefunden wird, kommt es zu einem Laufzeitfehler.

Behandler werden nicht nur für die Anweisungen innerhalb eines Programms, sondern für ganze Aufrufketten definiert. In Prozeduren ausgelöste Ausnahmen, die nicht in der Prozedur selbst behandelt werden, werden an den Aufrufer weitergereicht. Der Aufrufer kann die Ausnahme entweder behandeln, oder selbst weiterreichen. Damit der Aufrufer einer Prozedur weiß, welche Ausnahmen in einer Prozedur auftreten können, müssen in der Regel alle nicht behandelten Ausnahmen der Prozedur in ihrer Schnittstelle hinter dem Schnittstellenparameter RAISING aufgeführt werden. Diese Regel kann durch spezielle Ausnahmeklassen umgangen werden.

Behandler werden für eine oder mehrere Ausnahmeklassen definiert. Durch die Angabe einer Oberklassen werden Behandler für alle ihre Unterklassen definiert. Dadurch wird die Behandlung ganzer Gruppen zusammengehöriger Ausnahmen möglich.

Die Zusammenfassung selbstdefinierter und vordefinierter Ausnahmen auf der Basis von Ausnahmeklassen bietet zum einen die Möglichkeit, alle Ausnahmen selbst auszulösen, und zum anderen den großen Vorteil einer durchgängigen Fehlerbehandlung im gesamten Programmablauf. Die ABAP-Syntax für klassenbasierte Ausnahmen führt zu einer deutlichen Trennung von normaler Programmverarbeitung und Fehlerbehandlung. Die Syntaxüberprüfung unterstützt die Programmierung der Ausnahmebehandlung weitestmöglich, indem sie nicht behandelte bzw. nicht weitergereichte Ausnahmen feststellt.

 

 

 

Ende des Inhaltsbereichs