C C 異常總結

2021-09-26 02:19:16 字數 1047 閱讀 2275

使用c++異常出來錯誤的原因

c語言處理錯誤的方式有終止程序(assert),返回錯誤碼,c標準庫中setjmp和longjmp組合,但都有各自的缺陷:assert發生記憶體錯誤,除0錯誤時就會終止程式,錯誤碼需要程式設計師查詢對應的錯誤,總之,c語言中基本都是返回錯誤碼的方式,部分採用錯誤碼的方式。

c++中異常處理含throw,當問題出現,會丟擲異常;catch,異常捕獲,在你想處理問題時,通過異常處理程式捕捉異常;try,try中**標示將被啟用的特定異常,他後面通常跟著乙個或多個catch塊。

異常的使用

異常的重新丟擲

有可能單個catch不能處理異常,在進行一些矯正處理後,希望再交給更外層的呼叫鏈函式來處理,catch則可以重新丟擲異常交給更上層的函式進行處理。

異常安全

建構函式完成函式的構造和初始化,最好不要丟擲異常,以免對不能完全初始化;

析構函式完成資源的清理,最好不要丟擲異常,易造成記憶體洩漏;

異常規範

為了讓函式使用者知道該函式可能丟擲的異常是什麼;

函式後面跟throw(),表示不丟擲異常;

若無異常介面宣告,則此函式可以丟擲任何型別的異常。

自定義異常體系

乙個專案中若隨意丟擲異常,外層呼叫者就沒有辦法使用,所以實際中都會自定義異常的規範體系,丟擲繼承的派生類物件,捕捉乙個基類。

class  exception

;class s : public exception

;class x : public exception

;int main()

catch(const exception& e)

catch(...)

return 0;

}

c++標準庫中異常體系

標準庫中異常不夠好用,一般都是自定義異常體系。

異常的優缺點

優點

缺點

C C 異常處理階段總結

所謂異常,即指令執行時,原計畫的執行順序必須改變。導致這種改變的原因包括 1,使用者主動丟擲異常 2.指令執行時異常。要進行異常處理,第一步就是捕獲異常。誰來捕獲,可能是 1.程式本身 2.作業系統。如果程式不捕獲,作業系統也不捕獲,系統肯定就崩潰了。程式本身只能捕獲使用者主動丟擲的異常。這種使用者...

C C 異常機制

此文為網上眾多博文整理結果,自己的思考較少,主要用於記錄以提醒自己。通俗易懂地介紹了異常的處理。c 的丟擲異常實際是作為另一種返回值來使用的。丟擲異常的好處一是可以不干擾正常的返回值,另乙個是呼叫者必須處理異常,而不像以前c語言返回乙個整數型的錯誤碼,呼叫者往往將它忽略了 malloc 就是個典型的...

C C 異常處理 二

c 中內建了異常處理的語法元素 try.catch.try語句處理正常 邏輯 catch語句處理異常情況 try語句中的異常由對應的 catch語句處理 try catch c 通過throw語句丟擲異常,throw關鍵字後邊跟的是一種 異常標誌 可以是任何資料型別 包括自定義類 來代表異常。程式設...