c – 做什么:抛0做/是什么意思?这是“坏”吗?

前端之家收集整理的这篇文章主要介绍了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)并获得至少一些有关错误的信息.

猜你在找的C&C++相关文章