我有一个旧的基于C的项目,我想将其从Atmel处理器移植到Raspberry Pi。
在编写本文时,C ++不是一个选项,将它全部转换为C ++会花费太多精力,几乎是重写。
有些问题/崩溃不能(很容易)被C抓住,所以有时我的程序会死掉&我想在到期之前发出最后的机会呼救。没有尝试恢复,我甚至可以没有错误的细节,只要我收到消息告诉我访问设备
长话短说,我认为如果我有异常处理,我可以更好地检测错误。
我正在考虑使用异常处理作为警告我去设备并获取完整的错误日志,重置硬件等的机会。如果我的代码,C将不会总是给我最后一次机会做某事砰的一声
由于我不想进行全面的C ++重写,只需将main()
包裹在try
/ catch
中就足够了吗?
这在技术上是否足够,还是我需要做更多?
除了更详细的错误报告之外,通过将每个(主要)函数包装在其自己的try
/ catch
中,还有什么可以获得的吗?
答案 0 :(得分:1)
除了更详细的错误报告之外,通过将每个(主要)函数包装在它自己的try / catch中还有什么可以获得的吗?
首先,只捕捉您可以改变程序行为以响应它们的异常(除非您只是想通过std::throw_with_nested()
添加更多上下文信息)
其次,c程序不会展示RAII,因此在这种情况下抛出异常可能会泄漏资源,除非您将所有句柄和内存分配包装在智能指针或启用RAII的句柄类中。
在考虑添加异常处理之前,您应该这样做。
如果该计划可能会在未来积极维持,那么这样做可能会有里程碑。如果没有,可能最好留下睡觉的狗躺着。