Re[2]: Обработка исключений FPU на C++
От: Vaynamond Россия  
Дата: 18.11.24 12:18
Оценка:
Здравствуйте, cserg, Вы писали:

C>Здравствуйте, Vaynamond, Вы писали:


V>>Гуру, подскажите пожалуйста, как правильно под Windows отлавливать исключения FPU на C/C++ ?

V>>Пытаюсь с помощью SEH — целочисленное деление на 0 отлавливает, а double не хочет. Т.е. EXCEPTION_FLT_DIVIDE_BY_ZERO вообще мимо кассы.
C>По умолчанию прерывания от плавающей точки замаскированы. Размаскировать можно используя _control87, _controlfp, __control87_2.
Огромное спасибо!
Я неправильно задал параметры для _controlfp.

V>>Можно, конечно, проверять _statusfp(), и это срабатывает, но зачем тогда EXCEPTION_FLT_* ?

C>В статье есть пример, когда деление на ноль, не выбрасывающее исключения, может быть полезным. Там же есть пример, как сделать чтобы выбрасывалось исключение. Код из статьи я не проверял.
Пример проверил на MSVS 2010, работает корректно.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.