将浮点异常转换为C异常

Converting floating point exceptions into C++ exceptions

是否可以在x86 Linux上将浮点异常(信号)转换为C异常?

这是出于调试目的,因此不可移植性和不完善性是可以的(例如,如果不能100%保证所有析构函数都被调用)。


如果您的C标准库实现支持TR1函数
fetestexceptferaiseexceptfeclearexcept(我还没有,所以我无法测试它),您可以检测五种浮点错误,然后可以抛出所需的任何异常。

有关这些功能的说明,请参见此处。

我还建议书《 The C Standard Library Extensions:A Tutorial and Reference》(皮特·贝克尔,ISBN-13:9780321412997)一书中的第12.3节"管理浮点环境",对这些功能进行了很好的描述。示例代码。

alt

推荐阅读