在C ++中定义自己的异常类

时间:2014-06-10 08:42:56

标签: c++ exception c++11

我试图弄清楚如何为C ++异常实现我自己的基类,这允许添加特定于错误的文本字符串。我认为std :: c ++异常不可能改变错误文本,即使不是在C ++ 11中也是如此:http://www.cplusplus.com/reference/exception/exception/。 我还想从我的Exception-base类派生更具体的异常。我阅读了很多文章,但我仍然不确定我的以下实现是否涵盖了所有重要方面。

class Exception : public std::exception {      
    public:
        Exception(const char* message) : m(message) {

        }

        virtual ~Exception() throw() {

        }

        virtual const char* what() const throw() {
            return m.c_str();
        }

    protected:
        std::string m;

    private:
        Exception();
    };

此实施方案是否正常?

1 个答案:

答案 0 :(得分:3)

如果派生自runtime_error(并且您的编译器支持继承构造函数),则可以将类压缩为

struct Exception : public std::runtime_error
{
  using runtime_error::runtime_error;
};

throw():自C ++ 11起,不推荐使用异常规范,而是使用noexcept