相当于C++中Java的非法论据

在Java中,如果方法的输入参数无效,我们可以抛出一个(类型为)。在C++中,不存在已选中和未选中异常的概念。标准C++中是否存在可用于指示运行时异常的类似异常?还是标准中没有一种共同的风格,但每个人都在实践中遵循这种情况?IllegalArgumentExceptionRuntimeException

或者,我应该只创建自己的自定义异常并抛出它吗?


答案 1

与Java不同,C++没有“标准框架”,只有一个小的(和可选的)标准库。而且,在程序员C++下,也存在着不同的观点,是否要使用异常。

因此,你会发现不同的人提出了不同的建议:有些人喜欢使用标准库中的异常类型,一些库(例如Poco)使用自定义异常层次结构(派生自std::exception),而另一些则根本不使用异常(例如Qt)。

如果要坚持使用标准库,则存在一个专门的异常类型:(extends)。invalid_argumentlogic_error

#include <stdexcept>

// ...
throw std::invalid_argument("...");

作为参考:以下是在 中定义(和记录)的标准异常类型的概述:stdexcept

exception
    logic_error
        domain_error
        invalid_argument
        length_error
        out_of_range
    runtime_error
        range_error
        overflow_error
        underflow_error

答案 2

std::d omain_error可能是你要找的,但我怀疑很少有人使用它。大多数人从 std::exception 派生自己的异常类型。


推荐