smi*_*997 4 c++ error-handling exception
我目前正在处理我自己的继承的异常类,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;
}
Run Code Online (Sandbox Code Playgroud)
所以,我的问题,我应该像这样离开它,还是在构造函数中做出改变并摆脱what()?
首先,std::exception("message")构造函数是VC++的实现细节.它在大多数其他实现中不存在.
首先将what-message存储在一个std::string看起来很方便,但它为低内存情况添加了一个极端情况:复制字符串可能会导致bad_alloc异常.并且在尝试处理第一个异常时发生新异常并不是那么好.
一个选项,直接从推导std::exception是代替从预定义的例外之一导出<stdexcept>,例如std::runtime_error.这些异常确实有构造函数采用字符串参数,并已经以某种方式解决了双异常问题.可能是因为没有存储std::string.
| 归档时间: |
|
| 查看次数: |
188 次 |
| 最近记录: |