Error Handling mit fstream



  • Hallo,

    folgendes Problem:
    Ich möchte gern Daten in eine Datei mittels fstream schreiben.
    Das funktioniert auch problemlos, allerdings möchte ich eine Fehlermeldung bekommen, falls die Datei nicht geschrieben werden konnte, z.B. weil der Pfad nicht existiert.

    fstream stream;
    	stream.open("x:\test.txt", ios::app);
    	if (stream.bad()) 
    	{
    		return -1;
    	}
    	stream << "TEST";
    	stream.close();
    	return 0;
    

    Gibt es das Laufwerk x nicht, so wird leider keine -1 zurück gegeben, sondern die 0.
    Wo liegt da der Denkfehler?

    Vielen Dank im voraus!



  • Ein Blick in die C++ Reference zeigt warum: "On failure, the failbit flag is set (which can be checked with member fail), and depending on the value set with exceptions an exception may be thrown."
    Du musst also auf fail() überprüfen, oder ganz einfach folgendes schreiben:

    fstream stream;
        stream.open("x:\test.txt", ios::app);
        if (!stream)
        {
            return -1;
        }
    

Anmelden zum Antworten