捕获的 std::Exception 是否可以使 What() 为 NULL?
对 e.what() 的检查是否低于开销?
//...
}
catch (const std::exception& e)
{
std::string error;
if(e.what())
error = e.what();
}
字符串的内容是实现定义的,所以我想答案是肯定的。
Edit:保护那个。标准说:
virtual const char* what() const throw();
5 Returns: An implementation-defined NTBS.
所以它必须返回一个字符串,而不仅仅是一个指针。并且字符串不能是NULL
。正如其他人指出的那样,很容易得出例外情况,其what()
确实返回NULL
,但我不确定这些东西如何符合标准。当然,如果您在自己的异常类中实现 What(),我认为允许它返回 NULL 是非常糟糕的做法。
More:
对于进一步的问题是否what()
可以返回NULL,以及类似令人兴奋的问题,请参阅通过继承扩展C++标准库? https://stackoverflow.com/questions/1073958/extending-the-c-standard-library-by-inheritance
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)