Code: Alles auswählen.
TRY.
result = value1 / value2.
CATCH cx_sy_zerodivide INTO ex_ref.
msg_text = ex_ref->get_text( ).
CATCH cx_sy_conversion_no_number INTO ex_ref.
msg_text = ex_ref->get_text( ).
CATCH cx_root INTO ex_ref.
msg_text = ex_ref->get_text( ).
ENDTRY.
IF NOT msg_text IS INITIAL.
WRITE / msg_text.
ELSE.
WRITE: / result.
ENDIF.
4byte hat geschrieben:So kannst du jetzt für jede auftretende Exception eine separate Behandlung durchführen.Legxis hat geschrieben:Ist es eigentlich okay, so mehrere CATCH hintereinander zu schreiben?Code: Alles auswählen.
* Tabelle direkt sortiert ausgeben (damit auch gleiche Spalteninhalte zusammenfügen) TRY. go_sort = go_alv->get_sorts( ). CATCH cx_salv_data_error INTO gx_salv_data_error. ENDTRY. TRY. go_sort->add_sort('VBELN'). CATCH cx_salv_data_error INTO gx_salv_data_error. CATCH cx_salv_not_found INTO gx_salv_not_found. CATCH cx_salv_existing INTO gx_salv_existing. ENDTRY.
CATCH cx_salv_data_error INTO gx_salv_data_error.
--> Behandle cx_salv_data_error
CATCH cx_salv_not_found INTO gx_salv_not_found.
--> Behandle cx_salv_not_found
Bzw. Wenn wird nur die Ausnahme behandelt, die zuerst auftretet
Wenn du alle Exceptions gleich behandelt möchtest, kannst du sie auch zuammenfassen.
CATCH cx_salv_not_found
cx_salv_existing
cx_salv_data_error.
--> Tue irgendwas
Legxis hat geschrieben:Während eines anderem Threads sind wir auf das Thema Ausnahmebehandlung gekommen und mir ist aufgefallen, dass es bei mir da noch was zu tun gibt.
Ich habe umhergesucht und viele viele verschiedene Möglichkeiten gesehen, Exceptions zu behandeln, und das hat mich nur noch mehr verwirrt.
Deshalb wollte ich mal fragen, wie ihr das macht, was die beste Methode ist, etc. am besten mit Codebeispiel.
So habe ich es bisher am Meisten gesehen und dieses Beispiel verstehe ich auch, aber ist das auch ein guter Weg, die Ausnahme zu behandeln?