ich habe mal eine grundlegende Verständnisfrage zur Ausnahmebehandlung in globalen Klassen. Wie sollte man dort das Auftreten von Ausnahmen gestalten? Sollte man mit 'RAISE EXCEPTION' auf eine eigens definierte Ausnahmeklasse, in der man die Fehlertexte anlegt, oder bspw. direkt mit 'Message' arbeiten? Bzw. sollte man extra eine Ausnahmeklasse anlegen, die nur von einer anderen Klasse genutzt wird?
Vorteile RAISE EXCEPTION mit eigener Ausnahmeklasse (zcx_...):
1. Keine Kopplung mit dem UI (SAP GUI, Web-Dynpro, ODATA-Service)
2. Ausnahme kann über viele Schichten propagiert werden und dann erst abgefangen
3. t100-Meldungen können in Ausnahmeklassen verwendet werden und werden auch mit dem Verwendungsnachweis gefunden
4. Ausnahmebehandler kann die Ausnahme auch im Dialog protokollieren und dem Benutzer eine Meldung anzeigen
Vorteile der Message-Anweisung:
1. Schneller zu implementieren
2. Ausnahmebehandler müssen nicht implementiert werden
3. Warnungen, die der Benutzer bestätigen muss, sind mit Ausnahmen schwerer zu implementieren
4. Im Batch-Modus werden die Meldungen direkt protokolliert
Eine eigene Ausnahmeklasse für eine Gruppe von zusammenhängenden Fehlersituationen gibt auf alle Fälle Sinn. In der Ausnahmeklasse können dann sinnvolle Ausnahmetexte angelegt werden.
Ich lege beispielsweise gerne eine Ausnahmeklasse pro Nachrichtenklasse an.
Kann mich im Prinzip Jocoder anschließen.
Da du hier von globalen Klassen ausgehst würde ich dir exception handling mit Ausnahmeklassen ( also ZCX* ) empfehlen. Das ist schlichtweg sauberer.
Außerdem sollte der Verwender dieser Klasse entscheiden können was bei einem solchen Fehler passiert. 'MESSAGE' ist hier einfach unsauber.
Es kommt aber unterm Strich darauf an wie "sauber" du programmieren möchtest. Wenn du z. b. nach dem MVC-Pattern programmieren möchtest, dann baust du dir mit den Exceptions deine Meldung zusammen und gibst sie dann im "View" part aus.