【发布时间】:2018-06-16 02:02:00
【问题描述】:
我目前正在开发我自己的继承自 std::exception 的异常类,我不确定是否应该创建自己的 what() 或只是调用
std::exception("message") 在我的类构造函数中。
这是我当前的代码:
FilterException::FilterException(const char* message, int num) noexcept :
error_message(message), error_number(num) {}
const char* FilterException::what() const noexcept
{
return error_message.c_str();
}
FilterException::~FilterException() noexcept
{
}
int FilterException::getErrorNumber() const noexcept
{
return error_number;
}
所以,我的问题是,我应该就这样离开它,还是在构造函数中进行更改并摆脱 what() ?
【问题讨论】:
-
“我目前正在开发自己的异常类,它继承自 std::exception” - 你的构造函数定义看起来不像。
-
并且没有采用字符串参数的
std::exception构造函数,参见en.cppreference.com/w/cpp/error/exception/exception -
也许a
std::exceptionreference 能帮上忙?特别是关于the constructor。 -
@Ron
std::exception不是容器,有virtual destructor。它的设计考虑到了继承,标准库已经有一个基于它的异常类的完整层次结构。 -
使用
std::runtime_error作为你的基类(因为它已经接受了一个 const char * / std::string 参数)。见:en.cppreference.com/w/cpp/error/runtime_error
标签: c++ exception error-handling