Fehlerüberprüfung bei cout?



  • aber man muss dem user des programms doch auch irgendwie den fehler melden^^



  • *nachdenkt*:

    if(std::cout << "Ausgabe" << std::endl) 
        if(std::cout << "Ausgabe ok!" << std::endl)
            if(std::cout << "Ausgabe ok ok!" << std::endl)
    

    Ihr habt ja recht, das war nicht optimal 🤡



  • Haha, darüber hab ich auch schon gerätselt 😃
    Die Lösung ist aber einfach: statt auf stdout auf stderr ausgeben.
    Oder in C++: Statt cout cerr.

    @ceplusplus: Der << Operator gibt keinen bool, sondern eine Referenz auf den Stream zurück. Der Returnwert hat keine Aussagekraft.
    (Wenn ich das Ganze richtig verstanden habe).

    Danke für die HIlfe!



  • Die Lösung ist aber einfach: statt auf stdout auf stderr ausgeben.

    Und wenn das auch fehlschlägt?



  • Dann beende ich einfach das Programm.

    So eine gute Fehlerüberprüfung hat aber nichtmal das Programm meines Lehrers 😉



  • wenn cerr auch fehlschlägt, dann startest du deine kleine kernelhacking routine, die alle an das system angeschlossenen ausgabegeräte abcheckt. und wenn davon keins funktioniert, dann morst du die ausgabe per blinkender scroll-lock led.



  • fehlerbehandler schrieb:

    wenn cerr auch fehlschlägt, dann startest du deine kleine kernelhacking routine, die alle an das system angeschlossenen ausgabegeräte abcheckt. und wenn davon keins funktioniert, dann morst du die ausgabe per blinkender scroll-lock led.

    🤡



  • fehlerbehandler schrieb:

    wenn cerr auch fehlschlägt, dann startest du deine kleine kernelhacking routine, die alle an das system angeschlossenen ausgabegeräte abcheckt. und wenn davon keins funktioniert, dann morst du die ausgabe per blinkender scroll-lock led.

    nice ^^
    post doch mal den quellcode der kernelhacking routine, dann bekommst auch ein keks von mir 🙂



  • Anders als ich zuvor behauptet habe, müsste
    if (!(cout << "test))
    funktionieren. Denn mit cin geht es ja auch.

    edit:
    Ich glaube ich verwende jetzt doch die oben angegebene Syntax. Das sollte laut der C++ FAQ light auch funktionieren:

    The operator void*() cast operator returns some non-NULL pointer if the stream is in a good state, or NULL if it's in a failed state.

    (http://www.parashift.com/c++-faq-lite/input-output.html).
    Oder kann mir jemand einen Grund sagen wieso es nicht funktionieren sollte?



  • keksmann schrieb:

    fehlerbehandler schrieb:

    wenn cerr auch fehlschlägt, dann startest du deine kleine kernelhacking routine, die alle an das system angeschlossenen ausgabegeräte abcheckt. und wenn davon keins funktioniert, dann morst du die ausgabe per blinkender scroll-lock led.

    nice ^^
    post doch mal den quellcode der kernelhacking routine, dann bekommst auch ein keks von mir 🙂

    klar, das geht so:

    int main(){float *f;f = (float*)malloc(sizeof(double));*f = M_PI;*(++f) = M_PI;--f;void *v;v = f;double *d;d = (double*)v;}
    

    (sorry, was beknackteres is mir auf die schnelle nich eingefallen ;))


Anmelden zum Antworten