Всякий раз, когда я вводил что-то кроме целого числа, я надеялся, что блок catch будет выполнен, но вместо этого я получаю эту ошибку:
Необработанное исключение в 0x002D0C39 в A03.exe: Stack cook ie Инструментальный код обнаружил переполнение буфера в стеке. произошло
, что приводит меня к:
Исключение, выданное в 0x76D44192 в A03.exe: исключение Microsoft C ++: std :: invalid_argument в ячейке памяти 0x0116D83 C.
Необработанное исключение в 0x000608B9 в A03.exe: инструментальный код стека ie обнаружил переполнение буфера в стеке.
Я пробовал различные варианты блоков и исключений с помощью та же ошибка. Может кто-нибудь сказать мне, что я делаю не так? Спасибо!
Вот код:
int main() {
while (true) {
std::string input;
int num = 0;
std::cout << "What number do you want to show?";
std::cin >> input;
try
{
num = std::stoi(input);
if (num >= 0 && num < 10)
{
std::cout << "FILLER: This will draw the number";
exit(0);
}
else {
std::cout << "FILLER: This is the else";
exit(1);
}
}
catch (std::runtime_error e)
{
std::cout << e.what();
//std::cout << "That is not a valid number." << '\n';
}
}
return 0;
}
ОБНОВЛЕНИЕ : отредактировал обработчик исключений, но все еще с ошибками:
int main() {
while (true) {
std::string input;
int num = 0;
std::cout << "What number do you want to show?";
std::cin >> input;
try
{
num = std::stoi(input);
if (num >= 0 && num < 10)
{
std::cout << "FILLER: This will draw the number";
exit(0);
}
else {
std::cout << "FILLER: This is the else";
exit(1);
}
}
catch (std::invalid_argument &e)
{
std::cout << e.what();
//std::cout << "That is not a valid number." << '\n';
}
}
return 0;
}