我试图弄清楚如何为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();
};
此实施方案是否正常?
答案 0 :(得分:3)
如果派生自runtime_error
(并且您的编译器支持继承构造函数),则可以将类压缩为
struct Exception : public std::runtime_error
{
using runtime_error::runtime_error;
};
throw()
:自C ++ 11起,不推荐使用异常规范,而是使用noexcept
。