Benutzer bei falscher Benutzung von Methoden ohne cout warnen



  • Hallo!

    Ich habe mehrere Methoden bzw. auch Funktionen, und will den Benutzer (=Programmierer) bei falscher Benutzung darauf aufmerksam machen, damit er weiß wieso sein Programm abstürzt.

    Variante 1.)
    Ein Pointer einer Klasse MUSS vom Anwender initialisiert werden, ansonsten würde ich da gerne irgendwie eine Meldung ohne cout ausgeben. Wie mache ich das am besten? assert?

    Variante 2.)
    Ich habe festgestellt das ein "falscher" (nennen wir es der Einfachheit halber so) Parameter übergeben wurde und würde das gerne mitteilen, wie würde ich das machen?

    Danke 🙂



  • assert ist sehr praktisch, aber funktioniert nur in Debugkompilaten.

    Ansonsten Exceptions. Die "nötigen" den Programmierer, auf eine Fehlerbehandlung acht zu geben.



  • BesteLoesung schrieb:

    Variante 2.)
    Ich habe festgestellt das ein "falscher" (nennen wir es der Einfachheit halber so) Parameter übergeben wurde und würde das gerne mitteilen, wie würde ich das machen?

    Meinst du damit wenn z.B. anstatt einer ganzen Zahl eine Kommazahl eingegeben wird?



  • Eine Möglichkeit wäre noch cerr (Ausgabestream für Fehlermeldungen des Programms), dann natürlich assert's oder Exceptions

    int calc(int p1,int p2)
    {
      if(p2==0)
        throw logic_error("Division durch 0");
      return p1/p2;
    }
    
    ...
    try
    {
      cout<<"calc(1,2)="<<calc(1,2)<<endl;
      cout<<"calc(1,0)="<<calc(1,0)<<endl;
    }
    catch(exception& e)
    {
      cerr<<"Fehler: "<<e.what()<<endl;
    }
    


  • EEK schrieb:

    BesteLoesung schrieb:

    Variante 2.)
    Ich habe festgestellt das ein "falscher" (nennen wir es der Einfachheit halber so) Parameter übergeben wurde und würde das gerne mitteilen, wie würde ich das machen?

    Meinst du damit wenn z.B. anstatt einer ganzen Zahl eine Kommazahl eingegeben wird?

    Nein, ich habe eine Funktion die beliebig viele Parameter akzeptiert. Wenn einer dabei ist, der gar nicht verarbeitet werden kann, soll eine Meldung ausgegeben werden ⚠


Anmelden zum Antworten