catch (std::ios_base::failure& e) { std::cin.clear(); //clear bad input flag std::cin.ignore(std::numeric_limits<std::streamsize>::max(), ' '); //discard input printf(InputException().what()); }