我有一箇舊的基於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