
//
// To jest przykładowy kod z podrozdziału 10.6 „Obsługa błędów wejścia i wyjścia” książki 
// "Programowanie. Teoria i praktyka z wykorzystaniem C++" Bjarne'a Stroustrupa.
//

#include "std_lib_facilities.h"

using namespace std;

//------------------------------------------------------------------------------

int main()
try
{
    int i = 0;
    cin >> i;
    if (!cin) {    // Ten kod będzie wykonywany, tylko gdy nie powiedzie się operacja wejściowa.
        if (cin.bad()) error("Zły stan strumienia cin."); // Uszkodzony strumień: wynosimy się stąd!
        if (cin.eof()) {
            // Nie ma więcej danych wejściowych.
            // W taki sposób powinny kończyć się serie operacji wejściowych.
        }
        if (cin.fail()) {   // Strumień napotkał coś, czego się nie spodziewał.
            cin.clear();    // Przygotowanie na więcej danych.
            // Odzyskiwanie sprawności.
        }
    }
}
catch (exception& e) {
    cerr << "Błąd: " << e.what() << '\n'; 
    return 1;
}
catch (...) {
    cerr << "Nieznany wyjątek!\n"; 
    return 2;
}

//------------------------------------------------------------------------------
