Exception richtig verwenden?



  • Namd!

    Folgendes Problem: Bei einer Klasse soll im Konstruktor eine Verbindung zu einer Datenbank aufgebaut werden, schlägt dies fehl soll das Programm Meldung erstatten und sich sauber beenden.

    Meine bisherige unsaubere Version:

    if(m_ptrMySQL->Connect("meinedatenbank", "root", "pw") == SQL_ERROR)
    	{
    		cout<<"fehlgeschlaten"<<endl;
                    PostQuitMessage(0);
    	}
    

    Mein neuer Versuch;

    try
      {
        m_ptrMySQL->Connect("meinedatenbank", "root", "pw");
      }
      catch(int a)
      {
        cout << "Caught exception:  " << a << endl;
        PostQuitMessage(0);
      }
    

    Irgendwie ist das doch fast identisch 😕 Wie verwende ich eine Exception richtig?



  • wirf ein objekt, keinen int

    und keinen int

    und gib die meldung an den user aus und frage ihn was du machen sollst, zB mit anderen login daten nochmal probieren, etc.

    hier ist es halt etwas blöd, weil du kaum gut reagieren kannst. viel interessanter wird es, wenn ein query oder ähnliches fehlschlägt, da hast du mehr möglichkeiten zu reagieren.



  • Seh ich auch so. Inzwischen benutz ich ein makro assert_throw(expr,exc). Ich will garnicht, dass die exceptions gefangen werden. Aber netterweise wird mir what() angezeigt, dass hilft wirklich(auch wenn es inperformant ist, in what() den Text über einen stringstream aufzubauen...)


Anmelden zum Antworten