让我们看一下从std::logic_error
派生的类:
std::out_of_range
。std::length_error
。std::domain_error
。std::future_error
时抛出std::future
(如果我们将对象作为方法的隐藏参数,那么std::future
也是一个参数)。似乎所有上述异常都在传递无效参数(无效位置,无效长度,无效未来)时引发。如果是这样,为什么它们不源自std::invalid_argument
?我应该从std::invalid_argument
中得出错误吗
或来自std::logic_error
?
是否存在与无效参数用法无关的逻辑错误?
答案 0 :(得分:3)
前三个例外可能表示某个参数超出范围。
它们还可能表明其他东西不在范围内。
可能是计算的结果,也可能是服务提供的数据。
并非每条信息都是一个论点。
关于future_error
…
如果我们将对象作为方法的隐藏参数,那么
std::future
也是一个参数
该解释基于实现细节,在设计类层次结构时或在语义上描述事物的作用时,这些细节不应发挥作用。从逻辑上讲,std::future
引发异常,而不是某些将std::future
作为参数的自由函数。结果,同样,“错误”的东西也不是争论。