std :: cin no arroja una excepción en la entrada incorrecta

Solo estoy tratando de escribir un programa simple que lea de cin, luego valide que la entrada es un número entero. Si lo hace, saldré de mi bucle while. Si no, le pediré al usuario que ingrese nuevamente.

Mi programa compila y funciona bien, lo cual es genial. Pero no solicita una nueva entrada si ingreso un valor no numérico. ¿Lo que da?

#include <iostream>
using namespace std;

int main() {
    bool flag = true;
    int input;
    while(flag){
        try{ 
            cout << "Please enter an integral value \n";
            cin >> input;
            if (!( input % 1 ) || input == 0){ break; }
        }
        catch (exception& e)
        { cout << "Please enter an integral value"; 
        flag = true;}
    }
    cout << input;
    return 0;
}

Respuestas a la pregunta(2)

Su respuesta a la pregunta