exceptions im main



  • hallo hab hier folgendes main:

    try
    	{
    		if(!CreateNewFile(value,"bla"))
    			throw string("error in creating file with random values!\n");
    
    		if(!CreateNewFile(value,fileNamestd))
    			throw string("error in creating file with random values!\n");
    
    //blabla Observer Design Pattern Sachen werden aufgerufen..blablabla
    
    	}
    	catch(std::string const& str) {
    		cerr << str << endl;
    	}
    
    	return 0;
    }
    

    Nun zu meiner Frage: macht es überhaupt Sinn die Sachen im main auch in ein try-catch block zu "wrappen". beim CreateNewFile gebe ich beim ersten Versuch ja was falsches rein und natürlich krieg ich die exception zurück, allerdings komm ich ja im programm nicht weiter. soll ich also vielleicht hier das mit err ausgeben?


  • Mod

    Ich verstehe nicht, wieso die Tiefe der Aufrufebene eine Rolle spielen sollte. Exceptions sollen geworfen werden, wo sie auftreten und behandelt werden, wo die Möglichkeit der Behandlung besteht. Da ist doch egal, ob dies die oberste Ebene des Programms ist oder nicht.

    Was hier eher auffällt ist, dass du Exceptions anscheinend eher als eine Art Kontrollflussinstrument benutzt. Die Ebenen in der die Exception auftreten und behandelt werden (wobei die Ausgabe einer Fehlermeldung nicht wirklich eine Behandlung ist, aber wir wollen mal nicht pingelig sein*) sind bei dir ja die gleichen!

    if(!CreateNewFile(value,"bla"))
    {
       cerr << "error in creating file with random values!\n";
       return 0;
    }
    

    *: Dir ist schon bewusst, dass spätestens die Laufzeitumgebung alle Expeptions fangen wird** und dann in der Regel eine entsprechende Meldung gibt? Nutz ein normales Exceptionobjekt anstatt std::string, wenn du eine aussagekräftigere Meldung möchtest. Hier zum Beispiel eine typische Ausgabe auf gängigen Linuxplattformen:
    http://ideone.com/UAuwJg

    **: Irgendein Klugscheißer erklärt dir gleich, wieso es in diesem Fall technisch inkorrekt ist, von "Fangen" zu reden. Ich halte mich damit nicht auf.


Anmelden zum Antworten