Здравствуйте, Vaynamond, Вы писали:
V>Гуру, подскажите пожалуйста, как правильно под Windows отлавливать исключения FPU на C/C++ ?
V>Пытаюсь с помощью SEH — целочисленное деление на 0 отлавливает, а double не хочет. Т.е. EXCEPTION_FLT_DIVIDE_BY_ZERO вообще мимо кассы.
По умолчанию прерывания от плавающей точки замаскированы. Размаскировать можно используя
_control87, _controlfp, __control87_2.
V>Можно, конечно, проверять _statusfp(), и это срабатывает, но зачем тогда EXCEPTION_FLT_* ?
В
статье есть пример, когда деление на ноль, не выбрасывающее исключения, может быть полезным. Там же есть пример, как сделать чтобы выбрасывалось исключение. Код из статьи я не проверял.