Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/129.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当设置了某些数学错误no值时,如何引发异常? 我需要在全局上停止执行我的C++代码,只要特定的全局变量ErnO的值被更具体地设置,我只关心域错误EDOM的值。_C++_Exception - Fatal编程技术网

当设置了某些数学错误no值时,如何引发异常? 我需要在全局上停止执行我的C++代码,只要特定的全局变量ErnO的值被更具体地设置,我只关心域错误EDOM的值。

当设置了某些数学错误no值时,如何引发异常? 我需要在全局上停止执行我的C++代码,只要特定的全局变量ErnO的值被更具体地设置,我只关心域错误EDOM的值。,c++,exception,C++,Exception,我已经看到库math_errhandling允许使用常量math_errhandling,以便为每种数学错误自动引发错误 在我的例子中,我感兴趣的是针对代码中发生的每个域错误自动生成一个FE_INVALID 然而,我的代码本身已经能够处理某些类型的数学错误,比如divde by zero错误。因此,FE_DIVBYZERO的自动升高是完全不需要的 是否有一种实用的方法来实现这种部分异常的提升,用MathyRebug处理或其他C++库?或者,我如何在检查errno值的基础上实现异常引发 >我怀疑你

我已经看到库math_errhandling允许使用常量math_errhandling,以便为每种数学错误自动引发错误

在我的例子中,我感兴趣的是针对代码中发生的每个域错误自动生成一个FE_INVALID

然而,我的代码本身已经能够处理某些类型的数学错误,比如divde by zero错误。因此,FE_DIVBYZERO的自动升高是完全不需要的


是否有一种实用的方法来实现这种部分异常的提升,用MathyRebug处理或其他C++库?或者,我如何在检查errno值的基础上实现异常引发

>我怀疑你是从C++中引用MythyRebug处理的。这不是一个库,而是一个实现定义的常量,它告诉您实现如何处理错误。你不能通过C++来改变这个常数的值,尽管你可以通过某些编译器选项来改变它的值。 即便如此,该标准只定义了可能的值MATH_ERRNO==1、MATH_ERREXCEPT==2和隐式MATH_ERRNO | MATH_ERREXCEPT==3。你对数学很好奇。这仅仅意味着您可以在每次调用后调用std::fetestexceptFE_INVALID。它不是自动捕获的一个真正的C++异常,你可以捕捉到。
P>根本问题在于C++与真正的面向矢量的现代FP硬件并不匹配。对于高性能代码,编译器将合并许多操作,但是C++异常模型假定您可以精确地确定失败操作。IEEE754受此影响较小,因为它的错误处理精度较低。使用NaN允许更多的并行性。

请注意,match函数可能引发的异常是math函数规范的一部分。对于任意的errno值,没有通用的方法来引发任何类型的异常。还要注意,这些异常不是C++异常,可以在C++尝试中使用。我明白了!感谢您的有益澄清!