COUT & EXCEPTIONS



  • hallo

    wirft cout oder vielleicht ein object von ofstream eine exception ab, wenn was schief geht.

    wenn ich:

    ofstream out ("LPT1");
    out << "test";
    out.close();

    versuche, bleibt das programm stehen ... weil nix drucker angeschlossen ist

    weis jemand was ... bitte sinn der sache nicht in frage stellen ... just for fun



  • Nein, die streams werfen nur wenn man es explizit aktiviert Exceptions. Außerdem würde das Programm auch bei einer ungefangenen Exception nicht stehen bleiben, sondern beendet werden (Mit einer Meldung wie "Terminated" oder so).

    Vielleicht bleibt einfach intern der Befehl zum öffnen der Datei hängen.



  • try{
    ofstream out ("LPT1");
    out << "test";
    out.close();
    }
    catch(std::exception& e)
    {
    cout << e.what() << endl;
    }
    

    versuchs, ob es eine wirft...

    Devil



  • nix da exception geworfen ... schade
    trotzdem danke



  • Also erstens mal setzt es im Fehlerfall einen Fehlerstatus (out.bad() AFAIK), dann kann es, wenn man das so einstellt, zusätzlich eine Exception werfen. Wirklich hängenbleiben darf es in beiden Fällen nicht. Wenn es das tut, liegt das schlicht und einfach am unterliegenden Gerät ... damit hat ja der ofstream nichts zu tun, der ist ja auf das angewiesen, was ihm sein Streambuffer erzählt, der wiederum vom OS zu hören kriegt, und das wird wohl hier eine Weile (mit Timeout) hängen, bevor es sich mit einem Fehlercode zurückmeldet.


Anmelden zum Antworten