异常类 - what() 函数
Exception class - what() function
我目前正在研究我自己的从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("message")
构造函数是 VC++ 的实现细节。它在大多数其他实现中不存在。
起初,将 what-message 存储在std::string
中似乎很方便,但它为内存不足的情况增加了一个极端情况:复制字符串可能会导致bad_alloc
异常。在尝试处理第一个异常时发生新的异常并不是那么好。
直接从std::exception
派生的一种选择是从<stdexcept>
中预定义的异常之一派生,例如std::runtime_error
。这些异常确实有构造函数采用字符串参数,并且已经以某种方式解决了双重异常问题。可能是通过不存储std::string
.
相关文章:
- "error: no matching function for call to"构造函数错误
- 什么时候调用组成单元对象的析构函数
- 继承函数的重载解析
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- C++模板来检查友元函数的存在
- 递归函数计算序列中的平方和(并输出过程)
- 对RValue对象调用的LValue ref限定成员函数
- C++17复制构造函数,在std::unordereded_map上进行深度复制
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 在C++STL中是否有Polyval(Matlab函数)等价物?
- 为什么使用 "this" 指针调用派生成员函数?
- 将对象数组的引用传递给函数
- 自定义派生的 std::exception 类的 'what' 函数返回神秘的废话
- 异常类 - what() 函数
- 如何从c 中的异常类中定义what what what whate()函数
- 误解了 std::runtime_error 的 what() 函数
- 使用该类时<exception>,what() 函数似乎无法正常工作
- 从函数返回constchar*的正确方法,例如,重写std::exception::what()
- 如何用合适的what()函数来补充boost::exception
- 这个头函数(virtual const char* What () const throw())的含义是什么?