Ist das eine gute Anwendung für eine Exception?



  • Hi,
    wenn in einem Parser ein Syntaxfehler auftritt, ist es dann ratsam eine Exception zu schmeißen oder lieber anders mit dem Fehler umzugehen (Nullpointer als return-wert o.ä.)?

    Bin noch nichts so ganz fit mit Exceptions.

    Mfg,
    Whopper



  • Du kannst auch mit Fehlercodes arbeiten, oder Fehlerklassen schmeissen.
    Ist halt die Frage, ob man immer und über all mit Exceptions um sich schmeissen
    will, und ob man sie dann auch überall fängt.
    Ich hörte mal jemanden sagen, das Exceptions das moderne Goto sind,
    ganz unrecht hatte er damit nicht...

    Anderer Seits, was soll dann bei deinem Parser passieren ?
    Muss etwas aufgeräumt werden ? Bricht das Programm
    einfach nur ab, oder läuft es in Endlosschleifen rein ?



  • phlox81 schrieb:

    Ich hörte mal jemanden sagen, das Exceptions das moderne Goto sind,
    ganz unrecht hatte er damit nicht...

    Es geht nicht darum einen goto-Ersatz zu basteln, sondern das Programm sauber fortführen zu können wenn der Parser Müll geliefert bekommt. Nach dem finden des Fehlers soll dem Benutzer angezeigt werden wo dieser aufgetreten ist.



  • das wichtigste merkmal an exceptions is, dass man sie nicht ignorieren "kann"
    d.h. sie sind vorallem für schwerwiegende fehler wie z.b. in deinem fall fehlerhafte eigabedaten gut geeignet

    im gegensatz dazu kann ein returnwert leicht ungeprüft durchgehn und zu nem späteren fehler führn



  • Exceptions nehme ich mittlerweile nur noch, wenn ich da Problem in dem Kontext in dem es auftritt nicht lösen kann. Wenn ich die Möglichkeit habe in einer Anwendungsschicht das ganze mit 'nem Rückgabewert abzufangen, dann tue ich es.

    Ein hoffentlich gelungens Beispiel ist eine divison durch 0 in einer Vector Klasse. Wie soll der operator/ darauf reagieren, das durch null dividiert wurde? geht eigentlich nur sinnvoll mit einer exception, da der Aufrufer in seinem Kontext darauf reagieren sollte.


Anmelden zum Antworten