std::feraiseexcept
From cppreference.com
Defined in header <cfenv> | ||
int feraiseexcept(int excepts ); | (since C++11) | |
Attempts to raise all floating point exceptions listed in excepts
(a bitwise OR of the floating point exception macros). If one of the exceptions is FE_OVERFLOW or FE_UNDERFLOW, this function may additionally raise FE_INEXACT. The order in which the exceptions are raised is unspecified, except that FE_OVERFLOW and FE_UNDERFLOW are always raised before FE_INEXACT.
Contents |
[edit]Parameters
excepts | - | bitmask listing the exception flags to raise |
[edit]Return value
0 if all listed exceptions were raised, non-zero value otherwise.
[edit]Example
Run this code
#include <cfenv>#include <iostream> // #pragma STDC FENV_ACCESS ON int main(){std::feclearexcept(FE_ALL_EXCEPT);constint r = std::feraiseexcept(FE_UNDERFLOW|FE_DIVBYZERO);std::cout<<"Raising divbyzero and underflow simultaneously "<<(r ?"fails":"succeeds")<<" and results in\n"; constint 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";}
Output:
Raising divbyzero and underflow simultaneously succeeds and results in division by zero underflow
[edit]See also
(C++11) | clears the specified floating-point status flags (function) |
(C++11) | determines which of the specified floating-point status flags are set (function) |
C documentation for feraiseexcept |