Re: Исключние и деление на нуль
От: LaptevVV Россия  
Дата: 07.09.06 12:45
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Как перехватить исключение в случае деления на нуль ( 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 — с помощью него можно ловить прерывания... Некоторые...
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.