是否有可能在x86 Linux上将浮点异常(信号)转换为C++异常?
这是出于调试目的,因此非可移植性和不完美性是可以的(例如,如果不能100%保证所有析构函数都被调用).
如果您的C++标准库实现支持TR1函数
fetestexcept
,feraiseexcept
并且feclearexcept
(我还没有,那么我无法测试它)您可以检测到五种浮点错误,然后您可以抛出您想要的任何异常.
有关这些功能的说明,请参见此处.
我还推荐了"C++标准库扩展: Pete Becker的教程和参考 "一书中的第12.3节"管理浮点环境" ,ISBN-13:9780321412997,以获得带有示例代码的这些函数的优秀描述.