我遇到了一些代码,像这样:
if( Some_Condition ) throw 0;
我google了一下,发现了一些其他的代码片段使用那个奇怪的看起来0形式.
我认为有人会认为这是:
catch(const int& e) { }
或者这是一个NULL ptr?被视为无效*?
题
这扔0怎么办?它在某种程度上是特别的吗?
我的正常偏好是抛出一些(或衍生自)std :: exception的东西.所以对我来说这看起来很糟糕.这是“坏”吗?
从技术上讲,它是合法代码,但……
它是错误的代码:你应该总是从std :: exception或至少从某个类派生你的异常,它提供一些有关错误的有用信息,而不是普通的数字.但是从std :: exception派生是正确的方法,因为它允许使用最顶层的catch(std :: exception const& e)并获得至少一些有关错误的信息.