Здравствуйте, Аноним, Вы писали:
А>Как перехватить исключение в случае деления на нуль ( catch(...) не помогает )
А>А>try
А>{
А> int d = 0;
А> while( cin >> d )
А> cout << 10 / d << "\n";
А>}
А>catch(...)
А>{
А> cout << "division by zero\n";
А>}
А>
Деление на нуль — это аппаратное прерывание... Стандартный механизм не перехватывает... Нужно самому генерить исколючение:
class Zero{};
try {
if(d!=0) cout << 10 / d << "\n";
else throw Zero();
}
catch(const Zero &e)
{
cout << "division by zero\n";
}
Вместо пустого класса можно сделать развитый класс (или унаследовать от одного из стандартных) с полями и методами... Тогда можно будет в обработчик передавать информацию о делителе...
Или можно использовать SEH — с помощью него можно ловить прерывания... Некоторые...