Re: [問題] 純C下的異常處理

作者: descent (「雄辯是銀,沉默是金」)   2019-11-25 18:00:53
※ 引述《icetofux ()》之銘言:
: 2.我在三個層失敗的時候都會留下log,可是每當發生錯誤時回去讀log總覺得很冗餘
: ,比方說一但有個硬體異常引起的錯誤,我會在log中依序看到硬體驅動層的錯誤訊
: 息、協議處理層的錯誤訊息、業務邏輯層的錯誤訊息。但其實仔細想想硬體驅動層
: 一但失敗其他兩個層根本不可能會成功,這增加除錯時閱讀的難度,而且實質上浪
: 費了系統資源(記憶體、儲存媒體空間之類的),請問這部分有更好的取捨方式嗎?
: 我不確定有沒有把自己疑惑的地方好好表達清楚,如果有語意不明的地方請讓我知道。
: 謝謝。
https://descent-incoming.blogspot.com/2015/09/c-c-exception-handle.html
這是使用 setjmp/longjmp 實作類似 try/catch 的功能,
這個當然比不上 c++ exception handling, c++ exception handling
會在回到上層 function 時, 檢查是不是需要呼叫物件的解構函式,
真是一個偉大又複雜的功能。
使用這個要搞懂 setjmp/longjmp 以及其侷限性, 要不然可能會發生
很難找的 bug。
不確定你的問題是不是值得使用這個。
我用在 malloc fail 時, 直接跳到錯誤處理區塊。
作者: cuteSquirrel (松鼠)   2019-11-25 18:46:00
作者: flysonics (飛音)   2019-11-27 02:03:00
看起來頗實用 推
作者: koka813 (shift)   2019-12-03 23:33:00
感覺實用,可以推推看!

Links booklink

Contact Us: admin [ a t ] ucptt.com