gelöst Exceptions und Vererbung


Getting started ... Alles für einen gelungenen Start.

Moderatoren: Jan, Steff

gelöst Exceptions und Vererbung

Beitragvon SaskuAc » 08.11.2018, 13:43

Hallo miteinander,

ich bin etwas verwirrt. ( wie so oft )
Wir haben einen Report, der die Entgeltnachweise der Mitarbeiter verschlüsselt übermittelt. Läuft soweit auch ganz gut. Nun haben wir allerdings einen Dump bekommen. Die Fehlerursache habe ich schon herausgefunden - und zwar war es eine ungültige E-Mail Adresse ( kein @ ).

In diesem Fall wird die Exception "CX_ADDRESS_BCS" geworfen.

Was mich jetzt verwirrt ist, wir haben im programm die Methode "set_recipient":

Code: Alles auswählen
    IF iv_smtpadr IS NOT INITIAL.

      mo_send_request->add_recipient(
        i_recipient  = cl_cam_address_bcs=>create_internet_address( iv_smtpadr )
        i_copy       = iv_cc
        i_blind_copy = iv_bcc ).

      mv_recipient = iv_smtpadr.

    ELSEIF iv_uname IS NOT INITIAL.

      mo_send_request->add_recipient(
        i_recipient  = cl_sapuser_bcs=>create( iv_uname )
        i_copy       = iv_cc
        i_blind_copy = iv_bcc ).

      mv_recipient = iv_uname.

    ENDIF.

  ENDMETHOD.    


Hier wird die Exception geworfen. Nun ist es aber so, dass ich beim Aufruf der Methode die Exception "CX_BCS" - die Superklasse von "CX_ADDRESS_BCS" - abfange.. ungefähr so:

Code: Alles auswählen
""" some stuff
try.
   " some stuff
   go_mail->set_recipient( iv_smtpadr = p_smailc )
   " some stuff
 catch cx_bcs into data(exc).
" some stuff
endtry.
 


Meine Vermutung ist, dass der dump aufkommt, weil in der Definition der Methode kein Raising geschrieben wurde ( also in der set_recipient Methode ) und er dann einfach abbricht, obwohl im Stack drüber ein Exception Handling stattfindet.

Nun 1. Ist meine Vermutung korrekt? Weil wenn nein, wenn er die Exception nach oben reichen sollte, dann müsste doch der Catch-Block mit CX_BCS abfangen, oder?
2. Und das ist jetzt generell die Frage, fängt in ABAP eigentlich auch die Super-/Oberklasse alle exceptions ab die in der Vererbungshierarchie unter ihr stehen? ( Sollte ja eigentlich durch die OO-Beziehung "Ist ein" der Fall sein )
SaskuAc
Specialist
 
Beiträge: 185
Registriert: 01.06.2015, 10:16
Dank erhalten: 16 mal
Ich bin: Entwickler/in

Sponsor

Alte ABAP-Entwicklerweisheit: Weißt du weder aus noch ein, baust du einen BADI ein

Re: Exceptions und Vererbung

Beitragvon black_adept » 08.11.2018, 15:33

Moin SaskuAc,

@1) Vermutlich nicht. [ zur 2. Frage in 1): Wenn die Prämisse schon falsch ist, kann jede beliebige Folgerung gezogen werden ]
@2) Ja

Nachtrag zu 1) Der typische Fehler hier ist, dass in einer der Methoden in der Aufrufhierarchie zwischen deinem TRY-CATCH-Block und dem RAISE EXCEPTION vergessen wurde die Exception bekannt zu machen, so dass das Weiterreichen der Ausnahme nicht durchgängig ist. Bei dir wäre das wahrscheinlich die Methode SET_RECIPIENT
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de
black_adept
Top Expert
 
Beiträge: 3074
Registriert: 08.01.2003, 13:33
Wohnort: Lehrte ( bei Hannover )
Dank erhalten: 522 mal
Ich bin: Freiberufler/in

Re: Exceptions und Vererbung

Beitragvon ralf.wenzel » 09.11.2018, 08:11

Ich hoffe, ich habe die Frage richtig verstanden. Eine Ausnahme (oder eine Oberklasse dieser Ausnahme) muss aus aus der Schnittstelle der Methode hervorgehen, sonst wird sie nicht weitergereicht und ist ein ungefangene Ausnahme.Dann knallt das. Und ja, die Vererbung hat unter anderem den Sinn, dass der Eintrag einer Ausnahmeklasse alle Subklassen mit einschließt.


Ralf
ralf.wenzel
Top Expert
 
Beiträge: 3150
Registriert: 18.09.2004, 13:03
Wohnort: Hamburg
Dank erhalten: 178 mal
Ich bin: Freiberufler/in


Zurück zu ABAP® für Anfänger

  Aktuelle Beiträge   
Java & Bildbearbeitung
vor 13 Stunden von Madredure 0 Antw.
Call Transaction WE20 mit Werteübergabe
vor 12 Stunden von ewx 1 Antw.
Vergleich Customizing Tabellen auf zwei Systemen
vor 13 Stunden von ewx 2 Antw.
Empfehlung Antiviren-Programm?
vor 14 Stunden von Madredure 2 Antw.
BADI im Customizing finden
Gestern von Romaniac 0 Antw.

  Ähnliche Beiträge beta
exceptions -- über ne sap tabelle definieren???
24.11.2003, 11:53 von Asaph 4 Antw.

 

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder