在哪里定义异常类,内部类或更高级别?

rve*_*rve 13 c++ exception

异常类应该是可能抛出它们的类的一部分还是应该存在于更高级别?

例如 :

class Test
{
    public:
        class FooException: public ExceptionBase { };
        void functionThrowingFooException();
};
Run Code Online (Sandbox Code Playgroud)

要么

class FooException: public ExceptionBase { };
class Test
{
    public:
        void functionThrowingFooException();
};
Run Code Online (Sandbox Code Playgroud)

(functionThrowingFooException()是唯一能抛出的功能FooException)

Nik*_*sov 4

异常确实模拟了错误条件。这些是针对每个班级的吗?如果您需要从自由函数引发异常怎么办?

如果您选择为各种问题状态提供不同的异常类型 - 分析/列出这些错误状态,在它们之后命名异常,将任何特定于状态的数据放入这些异常类型中,从 的子类派生std::exception,然后在单独的标头中声明。