簡體   English   中英

Linux中沒有C ++的C中的異常處理

[英]Exception Handling in C without C++ in Linux

Linux是否在C中提供異常處理而不訴諸C ++? 或者,什么可能是實現這種異常處理的最佳方式? 目標是避免檢查所調用的每個函數的返回代碼,但是在C ++中做一些線程安全且易於移植的東西。

您可以通過編寫信號處理程序來處理信號。 在GNU中記錄的一些信號是:

  • 程序錯誤信號:用於報告嚴重的程序錯誤。
  • 終止信號:用於中斷和/或終止程序。
  • 警報信號:用於指示計時器到期。
  • 異步I / O信號:用於指示輸入可用。
  • 作業控制信號:用於支持作業控制的信號。
  • 操作錯誤信號:用於報告操作系統錯誤。
  • 雜項信號:雜項信號。
  • 信號消息:打印描述信號的消息

您可以在此處獲得有關此內容的更多信息。 它說明了以下我認為你正在尋找的東西:

如果您預期會發生導致信號的事件,您可以定義處理程序函數,並告訴操作系統在特定類型的信號到達時運行它。

我從來沒有聽說過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.

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