Namespaces
Variants

std:: feraiseexcept

From cppreference.net
Floating-point environment
Functions
feraiseexcept
(C++11)
(C++11) (C++11)
(C++11) (C++11)
Macro constants
(C++11)
Определено в заголовочном файле <cfenv>
int feraiseexcept ( int excepts ) ;
(начиная с C++11)

Пытается возбудить все исключения с плавающей точкой, перечисленные в excepts (побитовое ИЛИ макросов исключений с плавающей точкой ). Если одним из исключений является FE_OVERFLOW или FE_UNDERFLOW , эта функция может дополнительно возбудить FE_INEXACT . Порядок возбуждения исключений не определён, за исключением того, что FE_OVERFLOW и FE_UNDERFLOW всегда возбуждаются до FE_INEXACT .

Содержание

Параметры

excepts - битовая маска, перечисляющая флаги исключений для установки

Возвращаемое значение

0 если все перечисленные исключения были вызваны, в противном случае - ненулевое значение.

Пример

#include <cfenv>
#include <iostream>
// #pragma STDC FENV_ACCESS ON
int main()
{
    std::feclearexcept(FE_ALL_EXCEPT);
    const int r = std::feraiseexcept(FE_UNDERFLOW | FE_DIVBYZERO);
    std::cout << "Raising divbyzero and underflow simultaneously "
              << (r ? "fails" : "succeeds") << " and results in\n";
    const int e = std::fetestexcept(FE_ALL_EXCEPT);
    if (e & FE_DIVBYZERO)
        std::cout << "division by zero\n";
    if (e & FE_INEXACT)
        std::cout << "inexact\n";
    if (e & FE_INVALID)
        std::cout << "invalid\n";
    if (e & FE_UNDERFLOW)
        std::cout << "underflow\n";
    if (e & FE_OVERFLOW)
        std::cout << "overflow\n";
}

Вывод:

Raising divbyzero and underflow simultaneously succeeds and results in
division by zero
underflow

Смотрите также

очищает указанные флаги статуса чисел с плавающей запятой
(функция)
определяет, какие из указанных флагов статуса чисел с плавающей запятой установлены
(функция)
C documentation для feraiseexcept