c++ - 嵌入式 C++ : to use exceptions or not?

标签 c++ exception exception-handling embedded

我意识到这可能是主观的,所以会问一个具体的问题,但首先,背景:

我一直是嵌入式软件工程师,但通常在 OSI 堆栈的第 3 层或第 2 层。我不是一个真正的硬件人。我一般一直做电信产品,通常是手机/手机,这通常意味着类似 ARM 7 处理器的东西。

现在我发现自己处于一个更通用的嵌入式世界,在一家小型初创公司中,我可能会转向“不那么强大”的处理器(这是主观的一点)——我无法预测是哪个。

我已经阅读了很多关于嵌入式系统中 C++ 异常处理的辩论,但没有明确的答案。对可移植性和运行时有一些小小的担忧,但这似乎主要归结为代码大小(或者我读错了辩论?)。

现在我必须决定是使用还是放弃异常处理 - 为整个公司,永远(它进入一些非常核心的软件)。

这听起来像是“一段字符串有多长”,但有人可能会回答“如果你的一段字符串是 8051,那么不要。如果,OTOH,它是……”。

我该往哪边跳? super 安全&失去一个好的功能,或者特殊的代码,以后可能会遇到问题?

最佳答案

在性能方面,我的理解是异常实际上减小了代码的正常执行路径的大小并提高了性能,但使异常/错误路径更加昂贵。 (通常要贵很多)。

因此,如果您唯一关心的是性能,我会说以后不要担心。如果今天的 CPU 可以处理它,那么明天也可以。

然而。在我看来,异常是要求程序员始终比合理预期的程序员更聪明的特性之一。所以我说 - 如果你可以远离基于异常的代码。远离。

看看Raymond Chen的Cleaner, more elegant, and harder to recognize .他说得比我好。

关于c++ - 嵌入式 C++ : to use exceptions or not?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2226227/

相关文章:

c++ - std::array 默认初始化还是值初始化?

java - 为 "select ... limit ?,?"准备好的查询检索元数据时出现 MySQLSyntaxErrorException

android - 打开 MapActivity 时出现“终结器引发的未捕获异常”

c++ - C++异常的正确使用

java - 我是否应该从我的服务中抛出可重试的异常

c# - Ninject WithConstructorArgument : No matching bindings are available, 并且该类型不可自绑定(bind)

c++ - Qt错误: LNK1181: cannot open input file 'debug\main.obj'

c++ - 将局部对象复制到 vector

c++ - 结构中的数组

c++ - 从嵌套函数 C++ 中抛出自定义异常