ra
Высший разум
(113320)
12 лет назад
Можно обойтись без исключений:
if (cin >> n) {
cout << n;
} else {
cout << "intput error\n";
}
или не обходится:
cin.exceptions(ios::failbit | ios::badbit );
try {
cin >> n;
} catch (istream::failure e) {
cout << e.what();
}
SN@KEПрофи (590)
12 лет назад
спасибо большое) я так понял тут используется вылавливание ошибки именно на потоках ввода вывода.
А вот если допустим у меня используется следующий алгоритм:
1)Создается указатель на динамическу область памяти.
2)С этой памятью происходят какие-то действия (запись, чтение и тд...)
3)Эта память освобождается командой delete
4)Происходит попытка вывода на экран удаленной области памяти по тому же указателю (указатель не принимает значение NULL после высвобождения памяти)
Вопрос как с помощью исключения можно будет обработать ошибку на обращение по указателю на несуществующую память т. е. обработать пункт 4.
int n;
try
{
cin>>n;
}
catch (...)
{
cout<<"Error";
}
как можно сделать чтобы при вводе в n буквы программа выводила на экран ошибку или выполняла другие нужные мне действия?
когда я писал
int n;
try
{
cin>>n;
throw 1;
}
catch (...)
{
cout<<"Error";
}
программа в любом случае выводила мне ошибку из блока catch
Помогите разобраться нубу)