我有一个旧的基于C的项目,我想从Atmel处理器移植到Raspberry Pi。如何在C++异常处理中包装我的C代码?
在编写它的时候,C++不是一个选项,而且将它全部转换为C++会花费太多精力,几乎是一次重写。
一些问题/崩溃不能(容易)被C抓住,所以有时候我的程序会死掉&我希望在失效前发出最后的求救声。没有尝试恢复,我甚至可以生活没有错误的细节,只要我得到一个消息告诉我访问设备
长话短说,我认为如果我有例外,我可以有更好的错误检测处理。
我在考虑使用异常处理作为提醒我去设备并获取完整错误日志,重置硬件等等的机会。如果我的C不会总是给我最后的喘息机会,代码变得很大
因为我不想做一个完整的C++重写,是否仅仅将main()
换成try
/catch
?
技术上是否足够,还是我需要做更多?
除了更详细的错误报告,有没有什么可以通过将每个(主要)功能包装在它自己的try
/catch
?
异常由'throw'语句抛出。 Seg错误不需要抛出异常;他们是未定义行为的症状。 –
分段错误不保证被try/catch(...)捕获。 实际上,即使您指定了C样式处理程序,也不应在分段错误后继续。 我建议你只需在每个C函数周围添加try/catch,并进行广泛的日志记录并希望获得最佳效果! – Rami
请忘记我曾经说过seg故障(但是+1,两者);这是一个不好的例子,我将它从问题中删除(我检查NULL参数,但可能不会在每次解除引用前检查NULL)。但是,@PeteBecker,异常不会从'throw'中产生,这就是我想要赶上的 – Mawg