什么是域错误

rev*_*rev 12 c++ stl

在c ++中,<stdexcept>有一个"域错误"的基类,std :: domain_error.我不明白在什么情况下我应该在我的代码中抛出域错误.所有其他异常基类都非常自我解释.我很确定std :: domain_error本身与互联网域名无关,所以请解释域错误的错误类别并提供一些示例.

Luc*_*lle 13

在处理数学函数时,都会使用域和范围错误.

一方面,函数的域是函数可以接受的值集.例如,根平方函数的域是正实数的集合.因此,domain_error当函数的参数未包含在其域中时,将抛出异常

另一方面,函数的范围是函数可以返回的值集.例如,像这样的函数的范围:

f(x) = -x²
Run Code Online (Sandbox Code Playgroud)

是负实数的集合.那有什么意义range_error呢?如果函数的参数在其域中,则结果必须在其范围内,因此我们不应该在范围内有任何错误...但是,有时可以定义值,但不能表示.例如,在C中,<math.h>如果返回值的大小(或太小)无法表示,则函数会生成错误


Joh*_*lla 6

一个域误差指的是与问题的数学领域的功能.有时仅为某些值定义函数.如果尝试使用不属于其域的参数调用此类函数,则表示存在域错误.

例如,尝试sqrt()使用否定参数调用是域错误,因为负数不是域的一部分sqrt().