1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
| #include <iostream>
#include <stdexcept>
#include <csignal>
class FloatingPointException : public std::exception
{
public:
FloatingPointException()
{
msg = "FloatingPointException";
}
virtual ~FloatingPointException() throw()
{
}
virtual const char * what() const throw()
{
return this->msg.c_str();
}
private:
std::string msg;
};
void floatingPointExceptionHandler(int i)
{
std::cerr<<"floatingPointExceptionHandler"<<std::endl;
throw FloatingPointException();
}
void f()
{
try
{
int i = 0;
i = 4/i;
}
catch(FloatingPointException & e)
{
std::cerr<<e.what()<<"e"<<std::endl;
}
}
int main()
{
signal(SIGFPE, floatingPointExceptionHandler);
f();
return 0;
} |
Partager