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 )