Qt C++;不允许有例外

Qt C++;不允许有例外,qt,c++11,exception,gcc,Qt,C++11,Exception,Gcc,我们公司不允许他们这样做,但没有提供决定背后的理由。我们这些“愚蠢的人”谁也想不到原因。建议?只是猜测一些原因: 许多规则都非常古老,是在不再适用的假设/条件下定义的。早期的异常实现存在严重的性能缺陷,例如,一些编译器完全禁用了优化。这已经过时了,现在如果不抛出异常,则开销为零。投掷比必须做一些工作,因此不是免费的。不幸的是,更改规则通常非常耗时,因为它们是某些QA过程的一部分 嵌入式程序员通常不允许异常。首先,异常为RTTI带来了一些大小开销,这在嵌入式代码中也经常被禁止。第二,异常使得很难

我们公司不允许他们这样做,但没有提供决定背后的理由。我们这些“愚蠢的人”谁也想不到原因。建议?

只是猜测一些原因:

  • 许多规则都非常古老,是在不再适用的假设/条件下定义的。早期的异常实现存在严重的性能缺陷,例如,一些编译器完全禁用了优化。这已经过时了,现在如果不抛出异常,则开销为零。投掷比必须做一些工作,因此不是免费的。不幸的是,更改规则通常非常耗时,因为它们是某些QA过程的一部分

  • 嵌入式程序员通常不允许异常。首先,异常为RTTI带来了一些大小开销,这在嵌入式代码中也经常被禁止。第二,异常使得很难对实时性能进行推理,因为性能很难预测

  • 谷歌的编码风格有一个无例外的规则。这里的论点是旧代码不是异常安全的,例如没有RAII类。如果在这些遗留代码中引入异常,则很可能会出现一些问题。然而,我强烈主张旧代码应该被修复


只是猜测一些原因:

  • 许多规则都非常古老,是在不再适用的假设/条件下定义的。早期的异常实现存在严重的性能缺陷,例如,一些编译器完全禁用了优化。这已经过时了,现在如果不抛出异常,则开销为零。投掷比必须做一些工作,因此不是免费的。不幸的是,更改规则通常非常耗时,因为它们是某些QA过程的一部分

  • 嵌入式程序员通常不允许异常。首先,异常为RTTI带来了一些大小开销,这在嵌入式代码中也经常被禁止。第二,异常使得很难对实时性能进行推理,因为性能很难预测

  • 谷歌的编码风格有一个无例外的规则。这里的论点是旧代码不是异常安全的,例如没有RAII类。如果在这些遗留代码中引入异常,则很可能会出现一些问题。然而,我强烈主张旧代码应该被修复


本文列出了关于C++中异常使用的论证和反驳(神话)。

< /P> < P>本文列出了关于C++中异常使用的论证和反驳(神话)。


在一些相当大的应用程序领域,通常禁止出现异常。嵌入式系统,控制台游戏,很少使用例外,因为平台可能有限制或没有支持

Bjarne Stroustrup帮助编写了JSF空中交通工具编码标准,它也禁止C++异常。


原因是,在响应速度至关重要的情况下,异常可能会降低代码的速度,以至于使用异常会带来不合理的风险。或者,更难对代码的速度进行推理。

有些相当大的应用程序领域通常禁止异常。嵌入式系统,控制台游戏,很少使用例外,因为平台可能有限制或没有支持

Bjarne Stroustrup帮助编写了JSF空中交通工具编码标准,它也禁止C++异常。


原因是,在响应速度至关重要的情况下,异常可能会降低代码的速度,以至于使用异常会带来不合理的风险。或者,更难对代码的速度进行推理。

C++异常实现有以下缺点:容易发生内存泄漏、缺少调用堆栈、在析构函数中发生抛出时崩溃、“noexcept”的复杂性。 当项目中采用异常时,很容易产生内存泄漏。由于您不知道将抛出哪个方法,所以在内存管理和调整所有代码库时必须非常谨慎。这就是为什么我在C++、java和Python项目中使用异常,而不是在C++中使用异常的原因。​


<> P>许多C++ LIBS和框架不使用异常(EX-QT)

< P> C++异常实现有如下缺点:易发生内存泄漏、缺少调用堆栈、在析构函数中发生抛出时发生崩溃、“No.Objor”的复杂性。 当项目中采用异常时,很容易产生内存泄漏。由于您不知道将抛出哪个方法,所以在内存管理和调整所有代码库时必须非常谨慎。这就是为什么我在C++、java和Python项目中使用异常,而不是在C++中使用异常的原因。​


<> P>许多C++ LIBS和框架不使用异常(EXQT)

,不知道你正在开发什么样的软件,这很难说。不过,这听起来确实过于教条。也许是换工作的时候了?既然你给它贴上了标签,它可能与Qt不依赖例外,只是照着做有关。谢谢你的回答。这些应用程序都是普通的桌面应用程序,不是很关键,也不是实时的。如果不知道你正在开发什么样的软件,很难说。不过,这听起来确实过于教条。也许是换工作的时候了?既然你给它贴上了标签,它可能与Qt不依赖例外,只是照着做有关。谢谢你的回答。这些应用程序都是普通的桌面应用程序,不是很关键,也不是实时的。所有提供的答案都很好,我选择了这个,因为链接是关于异常的官方常见问题解答,而作者得分最少。所有提供的答案都很好,我选择了这个,因为链接是关于异常的官方常见问题解答,而作者的观点最少。