G
WebFritzi schrieb:
Ich weiß nämlich noch gar nicht, wie ih überhaupt Exceptions verwende. Ist in meinem Fall (s.o. im Code) überhaupt eine nötig?
Ich habe es in meiner String Klasse so gemacht, dass solche Sachen einfach nur geloggt werden. Wenn etwas gelöscht werden soll, was es gar nicht gibt, dann ist das nicht unbedingt ein Grund, weshalb eine Anwendung gleich mit Exceptions um sich werfen soll, imo. Immerhin passiert da ja nix Schlimmes. Dieser logische Fehler des Client muss sicherlich irgendwann beseitigt werden, aber bis dahin kann das Programm auf jeden Fall weiterlaufen. Ich habe für das Logging extra Funktionen/Klassen geschrieben, die die Arbeit übernehmen. Das sieht dann angewendet ungefähr wie folgt aus:
VERIFY(offset_within_range(index, len));
Hier würde halt nur geloggt werden, danach aber die Ausführung fortgesetzt werden.
In deinem Fall wäre zB Folgendes notwendig
VERIFY_RETURN(offset_within_range(index, len));
Willst du, dass die Anwendung richtig hart bestraft wird, kann man auch Folgendes machen
VERIFY_ERROR(offset_within_range(index, len));
Hier fliegt dann halt eine Exception oder die Anwendung wird hart beendet.
Wie auch immer, alles was intern passiert, bleibt transparent. Der Anwender muss sich darum also nicht kümmern. So kann man später die Fehlerbehandlung auch ändern, ohne dass man grossen Aufwand betreiben muss. Von der Benutzung her sind das also alles spezifische Asserts.