簡體   English   中英

如何在C ++異常處理中包裝我的C代碼?

[英]How to wrap my C code in C++ exception handling?

我有一個基於C的舊項目,我想從Atmel處理器移植到Raspberry Pi。

在編寫它時,C ++並不是一種選擇,要將其全部轉換為C ++會花費很多精力,幾乎是重寫。

C不能(輕松)抓住某些問題/崩潰,所以有時我的程序會死掉,而我想在到期前發出最后一次求助的機會。 只要我收到一條告訴我訪問設備的消息,就無需嘗試恢復,甚至可以沒有錯誤的細節,

長話短說,我認為如果我有異常處理,我可以有更好的錯誤檢測。

我正在考慮使用異常處理作為提醒我進入設備並獲取完整錯誤日志,重置硬件等的機會。如果我的代碼無法正常運行,C不會總是給我最后的喘息機會

由於我不想完全重寫C ++,僅將main()包裝在try / catch就足夠了嗎?

從技術上講,這是否足夠?還是我需要做更多的事情?

除了更詳細的錯誤報告之外,通過將每個(主要)函數包裝在自己的try / catch是否有任何收獲?

除了更詳細的錯誤報告之外,通過將每個(主要)函數包裝在自己的try / catch中,還有什么要收獲的?

首先,僅捕獲可以更改程序行為以響應它們的異常(除非您只是想通過std::throw_with_nested()添加更多上下文信息)

其次,ac程序不會顯示RAII,因此在這種情況下引發異常可能會泄漏資源,除非您將所有句柄和內存分配包裝在智能指針或啟用了RAII的句柄類中。

在考慮添加異常處理之前,應先這樣做。

如果該程序很可能在將來得到積極維護,那么這樣做可能會很艱巨。 如果沒有的話,最好留下熟睡的狗撒謊。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM