Ansicht
Dokumentation

ABENEXCEPTION_CATEGORY_GUIDL - EXCEPTION CATEGORY GUIDL

ABENEXCEPTION_CATEGORY_GUIDL - EXCEPTION CATEGORY GUIDL

CPI1466 during Backup   General Data in Customer Master  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

Ausnahmekategorien

Jede klassenbasierte Ausnahme gehört einer von drei unterschiedlichen Ausnahmekategorien an, die jeweils festlegen, ob die Ausnahmen in Prozedurschnittstellen zu deklarieren sind. Technisch ist die Zugehörigkeit zu einer bestimmten Ausnahmekategorie über Vererbung realisiert. Alle Ausnahmeklassen sind Unterklassen der folgenden abstrakten globalen Klassen, die selbst wiederum von CX_ROOT erben:

  • CX_STATIC_CHECK
Ausnahmen dieser Kategorie müssen explizit in der Schnittstelle einer Prozedur deklariert sein, wenn sie aus dieser propagiert werden sollen. Die Syntaxprüfung kontrolliert statisch, ob alle in der Prozedur mit RAISE EXCEPTION ausgelösten oder in den Schnittstellen von aufgerufenen Prozeduren deklarierten Ausnahmen entweder mit CATCH behandelt werden oder explizit in der Schnittstelle deklariert sind.
  • CX_DYNAMIC_CHECK
Ausnahmen dieser Kategorie müssen ebenfalls explizit in der Schnittstelle einer Prozedur deklariert sein, um propagiert werden zu können. Dies wird aber nicht statisch von der Syntaxprüfung, sondern erst dynamisch zur Laufzeit überprüft.
  • CX_NO_CHECK
Ausnahmen dieser Kategorie müssen nicht explizit im Interface der Prozedur deklariert werden, da die Klasse CX_NO_CHECK und ihre Unterklassen immer implizit deklariert werden. Um Kategorienänderungen bei bestehenden Ausnahmen zu unterstützen und das Vorkommen von Ausnahmen dieser Kategorie zu dokumentieren, dürfen Ausnahmen der Kategorie CX_NO_CHECK auch explizit in Interfaces von Prozeduren deklariert werden.

Geeignete Ausnahmekategorie verwenden

Verwenden Sie beim Anlegen und Auslösen klassenbasierter Ausnahmen eine Ausnahmekategorie, die der Fehlersituation angemessen ist:

  • CX_STATIC_CHECK für die statische Absicherung der Ausnahmebehandlung
  • CX_DYNAMIC_CHECK für durch Vorbedingungen verhinderbare Fehlersituationen
  • CX_NO_CHECK für an Ort und Stelle nicht behandelbare Situationen

Die einzelnen Ausnahmekategorien sind für die folgenden Fehlersituationen vorgesehen:

  • In der Regel sollten Ausnahmen, die in einer Prozedur auftreten, entweder dort behandelt oder in der Schnittstelle der Prozedur deklariert werden, um dem Aufrufer mitzuteilen, welche Ausnahmen er zu erwarten hat. Ausnahmen der Kategorie CX_STATIC_CHECK werden dahingehend syntaktisch überprüft. Diese Kategorie ist daher immer dann gerechtfertigt, wenn eine Prozedur (Methode) gezwungen werden soll, eine Ausnahme zu behandeln oder zumindest explizit weiterzuleiten. Wenn eine Ausnahme aber durch vorhergehende Prüfungen sicher verhindert werden kann, sind Ausnahmen der Kategorie CX_DYNAMIC_CHECK vorzuziehen.
  • Wenn die Programmlogik potenzielle Fehlersituationen ausschließen kann, müssen die zugehörigen Ausnahmen nicht behandelt oder in der Schnittstelle deklariert werden. Dies ist beispielsweise der Fall, wenn vor einer Division über eine Vorbedingung explizit gefordert wird, dass der Nenner ungleich null ist. Für diesen Fall können und sollen Ausnahmen der Kategorie CX_DYNAMIC_CHECK verwendet werden. Diese Ausnahmen brauchen nur behandelt oder deklariert werden, wenn ihr Auftreten nicht anders ausgeschlossen werden kann. In einer gut modellierten Anwendungen werden Ausnahmen in der Regel bereits durch entsprechende Bedingungen programmatisch verhindert und die Kategorie CX_DYNAMIC_CHECK sollte dann die häufigste Ausnahmekategorie sein.
  • Für Ausnahmesituationen, die praktisch jederzeit auftreten können und nicht an Ort und Stelle behandelt werden sollen oder können, ist die Kategorie CX_NO_CHECK vorgesehen. Ansonsten müssten beispielsweise alle Ausnahmen abgefangen oder deklariert werden, die bei Ressourcenengpässen auftreten können. Dies würde dazu führen, dass diese Ausnahmen dann in fast jeder Schnittstelle angegeben werden müssten, was Programme sehr schnell unübersichtlich machen würde.

Hinweis

Die Wiederaufsetzbarkeit einer klassenbasierten Ausnahme ist keine Eigenschaft der Ausnahmeklasse, sondern wird beim Auslösen der Ausnahme mit dem Zusatz RESUMABLE der Anweisung RAISE EXCEPTION festgelegt. Diese Eigenschaft kann für Ausnahmen der Kategorien CX_STATIC_CHECK und CX_DYNAMIC_CHECK beim Propagieren verloren gehen, wenn sie dort nicht ebenfalls mit RESUMABLE deklariert sind. Bei CX_NO_CHECK bleibt die Wiederaufsetzbarkeit implizit immer erhalten.






Vendor Master (General Section)   General Data in Customer Master  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 5250 Date: 20240523 Time: 171028     sap01-206 ( 118 ms )