gpt4 book ai didi

c++ - std::logic_error 类是不同种类的 std::invalid_argument,不是吗?

转载 作者:搜寻专家 更新时间:2023-10-31 01:24:46 26 4
gpt4 key购买 nike

让我们看一下派生自 std::logic_error 的类:

  • std::out_of_range 当参数超出范围时抛出。
  • std::length_error 当指定长度的参数超出支持的值时抛出。
  • std::domain_error 应该在参数超出预期域时抛出。
  • std::future_error 在使用没有共享状态的 std::future 时抛出(如果我们将对象作为方法的隐藏参数,那么 std::future 也是一个参数)。

当传递无效参数(无效位置、无效长度、无效 future )时,似乎会抛出上述所有异常。如果是这样,为什么它们不是从 std::invalid_argument 派生的?我应该从 std::invalid_argument 导出错误吗还是来自 std::logic_error

是否存在与无效参数使用无关的逻辑错误?

最佳答案

前三个异常可能表示参数超出范围等。

它们也可能表示其他东西超出了范围。

这可能是计算的结果,也可能是服务提供的数据。

并非每条信息都是一个论点。


至于future_error……

if we take the object as a hidden argument of a method, then std::future is an argument too

该解释基于实现细节,在设计类层次结构或在语义上描述事物的作用时不应发挥作用。从逻辑上讲,std::future 抛出异常,而不是一些将 std::future 作为参数的可能的免费函数。因此,再次强调,“错误”的事情不是争论。

关于c++ - std::logic_error 类是不同种类的 std::invalid_argument,不是吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57738647/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com