我正在考虑嵌入式系统中的错误处理,特别是在C ++中,我希望得到一些关于我所理解的异常,返回代码和断言的不同用例的输入。
假设我们有一个系统可以分析从传感器获得的信号,并对结果进行一些计算。如果信号是平坦的,我们超出了操作范围,我们无法执行算法。
返回代码:预期平坦信号并且不是异常情况,返回代码如FLAT_SIGNAL,让更高级代码知道不运行算法并让用户知道我们超出范围就足够了。这是正常计划流程的一部分。
异常:如果传感器断开连接,或者信号显示其他异常外部条件的迹象,则抛出异常。
断言:使用断言检查类的状态和/或函数参数以查找编程错误或错误。不应包含在发布代码中。
编辑:添加一些具体问题。
混合异常和返回代码是否可以?应该在发布代码中关闭断言吗?在我描述的情况下,异常听起来有点矫枉过正吗?
答案 0 :(得分:1)
是的,混合返回值和异常非常好。对“通常不应该发生”的事情使用例外,并返回仍然需要检查的事物的值。
当然,assert
用于编程错误(例如,检查指针不是NULL
,检查值是否在范围内,值是否已初始化,等等)。