W.R.T.有不同的常见做法。 C++中的错误处理--因为它是一种多范式语言。 例如:
这些都有利弊。 最重要的是在您的程序中保持一致,并且与调用您的函数的任何人协调*-以便您满足他们的需求。
有关当前选项和未来潜在替代方案的详细介绍,请参阅本次按品牌&; Nash在C++年度会议CPPCON上:
CppCon 2018:“什么可能会出错?:期望与例外的故事”
这取决于你的观点。 有些人通过抛出异常来发誓,有些人会指出以下几点:
C++被设计成支持零开销的无异常操作,其结果是抛出代码路径被更多地涉及到。 异常在抛出时异常缓慢。 因此,至少应该避免在性能关键代码路径中抛出异常。
反对异常的另一个论点是,正确的错误处理和其他任何事情一样都是一个代码特性,并且它有助于使错误代码路径显式化。
反对异常的第三个论点是,C++的设计允许重载任何运算符,允许抛出诸如A=b;
这样简单的语句。 因此,如果程序中允许异常,则为使用异常编写的代码必须以特殊的异常安全方式编写(在局部变量中构造,并使用swap()
提交更改)。
作为一个推论,为使用异常而编写的代码与避免异常的代码不能很好地混合。 后者将不会以异常安全的样式编写,因此当异常跳过其执行的部分时,它就会在您面前崩溃。
对不起,我不知道使用异常的任何好的论据。 我所看到的所有论据(“它使代码更干净”之类的)似乎并没有真正地削减它,我不知道。 关于使用异常的论点,请参考一些异常狂热者。
底线:
有许多项目完全包含异常,还有一些项目在代码中禁止异常。 因为这两个阵营的代码不能很好地混合,所以你需要坚持你正在工作的项目是如何做到的。