首先,我确实在google上进行了快速搜索,但没有一个能解释我的搜索内容。
编辑:例如,我看了here。
类std::runtime_error
是一个异常类,表示在运行时发生的错误。除非我弄错了,否则它没有默认构造函数(我在尝试从中导出而没有显式调用父构造函数时出错)但它确实有字符串(-ish)构造函数,允许您指定消息。 / p>
我的问题是如何在成员函数中访问该消息,例如what()
(std::exception
中的虚函数)?父类中没有定义getMessage()
或类似的函数,如果碰巧是我重写的函数,则调用what()
是没用的。
我正在使用Visual Studio Community 2015,因此特定于编译器的方法是可以的,但我更喜欢便携式解决方案。
答案 0 :(得分:2)
指定您希望基类的what
而不是您自己的:
const char* what() const noexcept override {
auto base_msg = std::runtime_error::what();
return /* something using base_msg */;
}
但是,在what
和const
保持真实并且还返回指向将比函数调用更长的数据的指针时,您可以真正做到这一点。您可以在构造函数中进行格式化并返回类包含的缓冲区。请注意,在尝试抛出异常时,您想要的最后一件事是另一个错误。