Головна‎ > ‎C++‎ > ‎

Обробка винятків

try {
     int age = 12;
     if (age > 18) {
          cout << "OK";
     }
     else {
          throw age;   // "404"
     }
}
catch (int a) {
     cout << "NO 18: " << a;
}


NO 18: 12





try {
     int a = 1 / 0 // програма вилітає, catch - не спрацьовує
}
catch (int b) {
     cout << b;
}





int x = 3;

try {
     if (x == 0) { throw 'B'; }
     else if (x == 1) { throw x; }
     else if (x == 2) { throw 1.0; }
     else if (x == 3) { throw "Text1"; }
     cout << "\nEND";
}
catch (char c) { cout << "Char: " << c; }
catch (int i) { cout << "Int: " << i; }
catch (double d) { cout << "Double: " << d; }
catch (const char* s) { cout << "Char*: " << s; }


Char*: Text1





Вводити до коректного значення
#include <string>

    int opc;
    bool aux = true;
    cin.exceptions(istream::failbit);
    do {
        try {
            cout << "PLEASE INSERT VALUE:" << endl;
            cin >> opc;
            aux = true;
        }
        catch (ios_base::failure &fail) {
            aux = false;
            cout << "PLEASE INSERT A VALID VALUE" << endl;
            cin.clear();
            string tmp;
            getline(cin, tmp);
        }
    } while (aux == false);