Вот простой фрагмент кода, где происходит деление на ноль. Я пытаюсь поймать его:
#include <iostream>
int main(int argc, char *argv[]) {
int Dividend = 10;
int Divisor = 0;
try {
std::cout << Dividend / Divisor;
} catch(...) {
std::cout << "Error.";
}
return 0;
}
Но приложение все равно сработает (хотя я поместил опцию -fexceptions
из MinGW).
Можно ли поймать такое исключение (которое я понимаю не как исключение С++, а исключение FPU)?
Я знаю, что я мог проверить делитель до, но я сделал предположение, что, поскольку деление на ноль редко (по крайней мере, в моем приложении), это будет больше эффективно пытаться делить (и улавливать ошибку, если это происходит), чем проверять каждый раз делитель перед делением.
Я делаю эти тесты на компьютере WindowsXP, но хотел бы сделать это кросс-платформой.