wann throw()



  • Unter welchen Umständen macht es Sinn, bei einer Methode / Funktion mit anzugeben, ob und wenn welche Ausnahmen sie wirft? Oder sollte man sich das grundsätzlich angewöhnen?



  • Du solltest es nicht verwenden, es löst keine Probleme, sondern schafft nur neue.

    http://www.gotw.ca/publications/mill22.htm



  • gotw schrieb:

    Moral #2: Except possibly an empty one, but if I were you I’d avoid even that.

    Kann finde ich zu Dokumentationszwecken recht nützlich sein.
    Dumm ist natürlich, dass der Compiler nichts sagt wenn man was ändert, und die Funktion dann doch auf einmal was schmeissen kann 😞



  • hustbaer schrieb:

    Dumm ist natürlich, dass der Compiler nichts sagt wenn man was ändert, und die Funktion dann doch auf einmal was schmeissen kann 😞

    Japp 😞

    und deshalb:

    hustbaer schrieb:

    gotw schrieb:

    Moral #2: Except possibly an empty one, but if I were you I’d avoid even that.

    Kann finde ich zu Dokumentationszwecken recht nützlich sein.

    ist imho die beste Lösung, das throw() als kommentar zu schreiben:

    void foo() /*throw()*/
    {}
    

    wenn man lustig ist und auf makros steht, kann man auch so was machen:

    #define NO_THROW
    
    void foo() NO_THROW
    {}
    
    #undef NO_THROW
    

    evtl. nur noch nen anderen Namen nehmen, weil der msvc z.bsp. NO_THROW glaube ich selber definiert.

    bb


Anmelden zum Antworten