前端之家收集整理的这篇文章主要介绍了
c – 做什么:抛0做/是什么意思?这是“坏”吗?,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
上下文
我遇到了一些代码,像这样:
if( Some_Condition ) throw 0;
我google了一下,发现了一些其他的代码片段使用那个奇怪的看起来0形式.
我认为有人会认为这是:
catch(const int& e)
{ }
或者这是一个NULL ptr?被视为无效*?
题
这扔0怎么办?它在某种程度上是特别的吗?
我的正常偏好是抛出一些(或衍生自)std :: exception的东西.所以对我来说这看起来很糟糕.
这是“坏”吗?
通常throw可以抛出任何类型,任何你需要使用此类型或其基类型捕获它.
从技术上讲,它是合法代码,但……
它是错误的代码:你应该总是从std :: exception或至少从某个类派生你的异常,它提供一些有关错误的有用信息,而不是普通的数字.但是从std :: exception派生是正确的方法,因为它允许使用最顶层的catch(std :: exception const& e)并获得至少一些有关错误的信息.
原文链接:https://www.f2er.com/c/111008.html