c++ - 嵌入式系统中的错误处理

标签 c++ exception error-handling embedded assert

我正在考虑嵌入式系统中的错误处理,特别是 C++ 中的错误处理,我想就我所理解的异常、返回代码和断言的不同用例获得一些意见。

假设我们有一个系统可以分析从传感器获得的信号并对结果进行一些计算。如果信号平坦,则说明我们超出了操作范围,无法执行算法。

返回码:平坦信号是预期的并且不是异常情况,像 FLAT_SIGNAL 这样的返回码让更高级别的代码知道不要运行算法并让用户知道我们超出了范围就足够了。这是正常程序流程的一部分。

异常:如果传感器断开连接,或者信号显示其他异常外部条件的迹象,则抛出异常。

断言:使用断言检查类的状态和/或函数参数以查找编程错误或错误。不应包含在发布代码中。

编辑:添加一些具体问题。

可以混合使用异常和返回码吗?是否应该在发布代码中关闭断言?在我描述的情况下,异常听起来是否有点矫枉过正?

最佳答案

是的,混合返回值和异常绝对没问题。对“通常不应该发生”的事情使用异常,并为仍然需要检查的事情返回值。

当然,assert 用于编程错误(例如检查指针是否不是 NULL,检查值是否在范围内,值是否已初始化,等等).

关于c++ - 嵌入式系统中的错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31981708/

相关文章:

maven - Tomcat 错误 'The origin server did not find a current representation for the target resource or is not willing to disclose that one exists.'

c++ - protobuf 消息持有对同一类型的另一条消息的引用

c++ - std::priority_queue 对比 std::set 的 Dijkstra 最短路径算法性能

c++ - 无缝知道包含空字符的字符串的大小

javaparser - 遇到词法错误 : <EOF> after : ""

java - 向 web 服务发送 POST 请求时出现 NetworkOnMainThreadException

python-3.x - 在期望记录分隔符 ','时找到字段分隔符 '\n'

c++ - 没有默认构造函数会导致没有 move 构造函数吗?

java - Java 中是否可能存在运行时类型不匹配?

php - 错误记录 php - error_reporting(0) 没有达到预期的效果