c – 做什么:抛0做/是什么意思?这是“坏”吗?
发布时间:2020-12-16 03:35:18 所属栏目:百科 来源:网络整理
导读:上下文 我遇到了一些代码,像这样: if( Some_Condition ) throw 0; 我google了一下,发现了一些其他的代码片段使用那个奇怪的看起来0形式. 我认为有人会认为这是: catch(const int e) { } 或者这是一个NULL ptr?被视为无效*? 题 这扔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)并获得至少一些有关错误的信息. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |