RAII und Exceptions



  • drakon schrieb:

    Von dem her finde ich auch, dass Exceptions besser definiert hätten werden können.

    Sowas ist immer ein Risiko. Schau dir zB Java an, da haben die Verantwortlichen blödsinn definiert (checked exceptions) und nun muss man in Java damit leben. In C# dagegen wurde rein garnichts definiert und man lebt dort weitaus besser.

    Wenn du Verwendungszwecke und Features eng definierst riskierst du immer blödsinn zu definieren. ist also ein zweischneidiges schwert 😉



  • Das ist IMHO aber nicht direkt ein Phänomen mit Exceptions, sondern spiegelt eher die unterschiedlichen Herangehensweisen an "Fehler-/Ausnahme-/...-Situationen" wider. In C gab's das Problem früher auch schon mit "Returncode vs. errno".

    Hmm. Im Bezug auf C++ und sagen wir die "moderneren" Techniken finde ich, dass man da etwas verpasst hat.
    Stell dir vor es gäbe ein best-practise, wie für viele Sachen im Bezug auf Exceptions. Eine pauschalaussage, welche die meisten Fälle abdeckt. (is-a, vs. has-a in Vererbung, dynamische vs. automatische Objekte usw. gibt es das grundsätzlich und so ziemlich alle können diese Meinung vertreten, wann man diese Techniken braucht und wann eher nicht)

    Eins gibt's allerdings schon: "Exception fängt man nur da, wo man sie auch bearbeiten kann"...

    Jap, genau so etwas meine ich. Da wird kaum jemand kommen und sagen: hach, ich fang die auch da und da. Das passt einfach nicht und die Exceptions dort fangen, wo man sie behandeln kann ist wohl best-practise.

    Wenn du Verwendungszwecke und Features eng definierst riskierst du immer blödsinn zu definieren. ist also ein zweischneidiges schwert

    Wie gesagt meinte ich nicht, dass etwas vom Standard vorgeschrieben werden hätte sollen, sondern eher, dass es ein wohldefiniertes best-practise gibt, wie in sehr vielen anderen Techniken auch, wann sie eingesetzt werden und wann nicht. Da hat man imo etwas sehr mächtiges verpasst. Stell dir mal die Utopie vor, dass allen Programmierer klar und einleuchtend ist, wie man Fehler meldet und behandelt, wie auch allen klar ist, wann man Polymorphie einsetzt und wann nicht. 😉



  • Ich denke "Exceptional C++" (Herb Sutter) sollte einiges zu dem Thema enthalten.



  • hustbaer schrieb:

    Ich denke "Exceptional C++" (Herb Sutter) sollte einiges zu dem Thema enthalten.

    Was meinst du genau? - Das Buch enthält sehr viel, um mit Exceptions umzugehen und exceptionsicheren Code zu schreiben, aber IIRC wird da nichts oder nur sehr wenig dazu gesagt, wann es passend ist eine Exception zu werfen.


Anmelden zum Antworten