创建从std :: exception派生的用户异常?

yes*_*aaj 2 c++ exception

如何从标准异常创建用户异常类?

解决下面的情况说我有一个带有一些枚举的类,表示对象的类型

所以基于类型,成员函数是可用的.不可用的调用成员函数应抛出异常.类似地,当再次调用未初始化的getter时,应抛出异常(我使用默认参数来检查未初始化的对象).

Mar*_*ork 9

您应该从std :: runtime_error或其他标准异常(参见<stdexcept>)派生而不是直接从std :: exception派生.除了描述究竟发生了什么之外,它还正确地定义了what()方法.

此外,通常最好为每个问题定义一个不同的异常,而不是使用枚举.这允许try catch机制捕获适当的问题,但这完全取决于你的确切情况,没有进一步的信息,很难知道.

class myException: public std::runtime_error
{
    public:
        myException(std::string const& msg):
            std::runtime_error(msg)
        {}
};
Run Code Online (Sandbox Code Playgroud)

但:

so based on type, member functions are available.Calling member function
that is not available should throw an exception.
Run Code Online (Sandbox Code Playgroud)

这闻起来很有趣(如Martin Fowler Smell(看看他的书)).