使用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++標準庫中異常體系![](https://pic.w3help.cc/a6f/007a68f609f9087805a7b2dddf560.jpeg)
標準庫中異常不夠好用,一般都是自定義異常體系。
異常的優缺點
優點
缺點
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關鍵字後邊跟的是一種 異常標誌 可以是任何資料型別 包括自定義類 來代表異常。程式設...