ABAP OO und Exceptions

Die Objektorientierung mit ABAP®: Vererbung, Dynamische Programmierung, GUI Controls (u.a. ALV im OO).
7 Beiträge Seite 1 von 1
7 Beiträge Seite 1 von 1

ABAP OO und Exceptions

Beitrag von moo_jo (ForumUser / 36 / 10 / 7 ) » 15. Aug 2019 18:28

Moin zusammen Werte ABAP-Experten!

bei meinem aktuellen Projekt stehe ich wieder einmal davor, dass ich - meiner Meinung nach - zu wenig mit Exceptions arbeite. Mir fehlt dazu einfach etwas das Know-How. Hat jemand gute Seiten, Links, Tipps zu Exception Handling?

Konkret geht es mir um folgendes Beispiel:

Code: Alles auswählen.

NEW ZCL_DUDEN=>get_instance(
   )->check( 'supercalifragilisticexpialigetisch' 
   )->save( ).

In diesem Beispiel prüft die Methode Check() der Singleton Klasse ZCL_DUDEN, ob der Importing-Parameter eine Zahl enthält:

Code: Alles auswählen.

METHOD check.
IF iv_word CA '0123456789'.
  RAISE NOT_A_WORD.
ENDIF.
ro_me = go_me.
ENDMETHOD.

Mein Wunsch wäre, dass ich die Exception außerhalb der Methoden-Verkettung abfangen kann, so in etwa:

Code: Alles auswählen.

TRY.
NEW ZCL_DUDEN=>get_instance(
   )->check( 'supercalifragilisticexpialigetisch' 
   )->save( ).
CATCH NOT_A_WORD.
CATCH CX_ROOT.
ENDTRY.

Wie geht das denn? So schwer kann das ja wohl nicht sein?

Danke!

Moo_jo


Re: ABAP OO und Exceptions

Beitrag von ewx (Top Expert / 4088 / 179 / 403 ) » 15. Aug 2019 19:20

moo_jo hat geschrieben:
15. Aug 2019 18:28
So schwer kann das ja wohl nicht sein?
Das ist richtig... ;)

Hier mein Vorschlag:

Code: Alles auswählen.

REPORT.

CLASS not_a_word DEFINITION INHERITING FROM cx_static_check.
  PUBLIC SECTION.
ENDCLASS.

CLASS duden DEFINITION.
  PUBLIC SECTION.
    METHODS check
      IMPORTING
                word          TYPE string
      RETURNING
                VALUE(object) TYPE REF TO duden
      RAISING   not_a_word.
    METHODS save.
  PROTECTED SECTION.
    DATA word TYPE string.
ENDCLASS.
CLASS duden IMPLEMENTATION.
  METHOD check.
    IF word CA '0123456789'.
      RAISE EXCEPTION TYPE not_a_word.
    ELSE.
      me->word = word.
    ENDIF.

    object = me.
  ENDMETHOD.
  METHOD save.
    MESSAGE |{ word } saved in dictionary| TYPE 'I'.
  ENDMETHOD.
ENDCLASS.

PARAMETERS p_word TYPE string.

START-OF-SELECTION.

  TRY.
      NEW duden( )->check( p_word )->save( ).
    CATCH not_a_word INTO DATA(word_error).
      MESSAGE 'That''s no word... :(' TYPE 'I'.
  ENDTRY.

Folgende Benutzer bedankten sich beim Autor ewx für den Beitrag:
moo_jo (16. Aug 2019 08:22)


Re: ABAP OO und Exceptions

Beitrag von moo_jo (ForumUser / 36 / 10 / 7 ) » 15. Aug 2019 20:26

Hey Enno,

dein Coding läuft 1A und macht das, was ich erwarte :)

Habe das gerade noch in mein Beispiel eingebaut.

Ich muss jedoch in der Methode einen Exception Parameter definieren. Wenn ich diesen nun Raise, dann kann ich innerhalb der Methodenverkettung darauf reagieren. Das ist ja genau das, was ich möchte.

Jetzt stelle ich mir die Frage: Kann ich die Excecption Klasse irgendwie global als Attribut definieren und den Exception Parameter in der Methode umgehen?

Moo_jo

Re: ABAP OO und Exceptions

Beitrag von ewx (Top Expert / 4088 / 179 / 403 ) » 15. Aug 2019 22:46

Ja kannst du, indem du die Ausnahmeklasse von cx_no_check (oder cx_dynamic_check?!) ableitest.

Folgende Benutzer bedankten sich beim Autor ewx für den Beitrag:
moo_jo (16. Aug 2019 08:22)


Re: ABAP OO und Exceptions

Beitrag von moo_jo (ForumUser / 36 / 10 / 7 ) » 16. Aug 2019 08:22

Läuft nun!

@all
hat jemand noch gute Links und Tipps zu Exception Handling in ABAP OO?

Moo_jo


Re: ABAP OO und Exceptions

Beitrag von ewx (Top Expert / 4088 / 179 / 403 ) » 16. Aug 2019 09:22

Folgende Bücher enthalten jeweils ein Kapitel und Hinweise zu Exception classes:
ABAP To The Future
ABAP Kochbuch
Besseres ABAP

Der Ultimative Tipp lautet jedoch:
Einfach machen. Dann bekommt man am besten ein Gefühl dafür, wo die Stärken und wo die Schwächen der Ausnahmeklassen sind. Und man bekommt auch am ehesten die Probleme mit, die man dann gezielt lösen kann.

Seite 1 von 1

Aktuelle Forenbeiträge

Interne Tabelle um Felder aus SAP-Tabelle ergänzen
vor 17 Stunden von DeathAndPain 4 / 47
F4-Hilfe bei Parameters
vor 18 Stunden von deejey 4 / 78
Userexit für IDOC für Bestellung
vor 18 Stunden von deejey 3 / 38

Unbeantwortete Forenbeiträge

Unterschiedliche Konditionen AB und Rechnungdruck
vor 2 Tagen von Sebastian82 1 / 61
Änderungsbelege für Kundenfelder im BP
vor 6 Tagen von GerryRe 1 / 1996
Anlegen eines externen Dokumentes(URL) für PM-Auftrag
vor einer Woche von tekko 1 / 2010
Transaktionen MEIS / VE01
vor einer Woche von SAP_ENTWICKLER 1 / 2466