如何在C ++异常处理中包装我的C代码?

时间:2016-11-15 21:07:41

标签: c++ exception-handling

我有一个旧的基于C的项目,我想将其从Atmel处理器移植到Raspberry Pi。

在编写本文时,C ++不是一个选项,将它全部转换为C ++会花费太多精力,几乎是重写。

有些问题/崩溃不能(很容易)被C抓住,所以有时我的程序会死掉&我想在到期之前发出最后的机会呼救。没有尝试恢复,我甚至可以没有错误的细节,只要我收到消息告诉我访问设备

长话短说,我认为如果我有异常处理,我可以更好地检测错误。

我正在考虑使用异常处理作为警告我去设备并获取完整的错误日志,重置硬件等的机会。如果我的代码,C将不会总是给我最后一次机会做某事砰的一声

由于我不想进行全面的C ++重写,只需将main()包裹在try / catch中就足够了吗?

这在技术上是否足够,还是我需要做更多?

除了更详细的错误报告之外,通过将每个(主要)函数包装在其自己的try / catch中,还有什么可以获得的吗?

1 个答案:

答案 0 :(得分:1)

  

除了更详细的错误报告之外,通过将每个(主要)函数包装在它自己的try / catch中还有什么可以获得的吗?

首先,只捕捉您可以改变程序行为以响应它们的异常(除非您只是想通过std::throw_with_nested()添加更多上下文信息)

其次,c程序不会展示RAII,因此在这种情况下抛出异常可能会泄漏资源,除非您将所有句柄和内存分配包装在智能指针或启用RAII的句柄类中。

在考虑添加异常处理之前,您应该这样做。

如果该计划可能会在未来积极维持,那么这样做可能会有里程碑。如果没有,可能最好留下睡觉的狗躺着。