[英]Exception Handling in C without C++ in Linux
Linux是否在C中提供異常處理而不訴諸C ++? 或者,什么可能是實現這種異常處理的最佳方式? 目標是避免檢查所調用的每個函數的返回代碼,但是在C ++中做一些線程安全且易於移植的東西。
您可以通過編寫信號處理程序來處理信號。 在GNU中記錄的一些信號是:
您可以在此處獲得有關此內容的更多信息。 它說明了以下我認為你正在尋找的東西:
如果您預期會發生導致信號的事件,您可以定義處理程序函數,並告訴操作系統在特定類型的信號到達時運行它。
我從來沒有聽說過Linux提供類似的東西,但是這個頁面描述了C的第三方異常處理庫: http : //www.on-time.com/ddj0011.htm我一直無法找到但是下載鏈接。
內核通過使用goto跳轉到拆卸部分來完成它。
請參閱此處了解編碼標准: http : //lxr.linux.no/linux+v2.6.34/Documentation/CodingStyle
可能是Offtopic,但我無法抗拒,抱歉。
我必須說,到目前為止,我見過的唯一真正優秀且全面的異常機制是SEH - Windows中的結構化異常處理。
IT吹噓了C ++異常處理模型(當在堆棧展開期間在自動對象的析構函數中拋出異常時,它會引發爭議)。
此外,它是一個非常統一的異常處理,因為它結合了軟件異常和硬件生成的異常。
因此,如果你想要異常處理 - 要么為Windows編寫,要么為Linux實現類似的東西。
PS與許多人認為的不同,異常處理遠不只是使用jmp
中斷正常的程序流程。
這也是關於誰以及如何處理異常的一系列談判。 它(最重要的) - 在每個范圍內執行正確的清理 ,處理嵌套異常等。
我建議你看看我的圖書館例外4c嗎? 它已經在Linux上進行了測試,並具有許多功能,例如finally
塊,信號處理和一種允許您創建異常層次結構的多態性 。 它還支持多線程。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.