Функция feraiseexcept () в C ++ пытается вызвать все исключения с плавающей запятой, указанные в аргументе.
Функция feraiseexcept () определена в заголовочном файле.
feraiseexcept () прототип
int feraiseexcept (исключение int);
Исключения с плавающей запятой, которые необходимо вызвать, перечислены в исключениях аргументов.
Кроме того, вы должны включить FENV_ACCESS , что даст вашей программе доступ к среде с плавающей запятой для проверки возникших исключений.
feraiseexcept () Параметры
- исключения: список битовых масок флагов исключения, которые необходимо поднять.
Макрос | Тип | Описание |
---|---|---|
FE_DIVBYZERO | Погрешность полюса | Деление на ноль |
FE_INEXACT | Неточный | Неточные результаты, такие как (1.0 / 3.0) |
FE_INVALID | Ошибка домена | По крайней мере, один используемый аргумент - это значение, для которого функция не определена. |
FE_OVERFLOW | Ошибка диапазона переполнения | Результат слишком велик по величине, чтобы его можно было представить возвращаемым типом |
FE_UNDERFLOW | Ошибка диапазона недостаточного переполнения | Результат слишком мал по величине, чтобы его можно было представить возвращаемым типом |
FE_ALL_EXCEPT | Все исключения | Все исключения поддерживаются реализацией |
feraiseexcept () Возвращаемое значение
- Функция feraiseexcept () возвращает нулевое значение, если возникают все исключения, указанные в excepts.
- В противном случае возвращается ненулевое значение.
Пример: как работает функция feraiseexcept ()
#include #include #pragma STDC FENV_ACCESS ON using namespace std; int main() ( int retVal; feclearexcept(FE_ALL_EXCEPT); retVal = feraiseexcept(FE_OVERFLOW | FE_INVALID); if (retVal == 0) cout << "Successfully raised FE_OVERFLOW and FE_INVALID" << endl; else cout << "Raising FE_OVERFLOW and FE_INVALID failed" << endl; return 0; )
Когда вы запустите программу, вывод будет:
Успешно подняли FE_OVERFLOW и FE_INVALID