標準庫中也提供了很多的異常類,它們是通過類繼承組織起來的。異常類繼承層級結構圖如下:
每個類所在的標頭檔案在圖下方標識出來。
標準異常類的成員:
① 在上述繼承體系中,每個類都有提供了建構函式、複製建構函式、和賦值操作符過載。標準異常類的具體描述:② logic_error類及其子類、runtime_error類及其子類,它們的建構函式是接受乙個string型別的形式引數,用於異常資訊的描述
③ 所有的異常類都有乙個what()方法,返回const char* 型別(c風格字串)的值,描述異常資訊。
異常名稱
描述exception
所有標準異常類的父類
bad_alloc
當operator new and operator new,請求分配記憶體失敗時
bad_exception
這是個特殊的異常,如果函式的異常丟擲列表裡宣告了bad_exception異常,當函式內部丟擲了異常丟擲列表中沒有的異常,這是呼叫的unexpected函式中若丟擲異常,不論什麼型別,都會被替換為bad_exception型別
bad_typeid
使用typeid操作符,操作乙個null指標,而該指標是帶有虛函式的類,這時丟擲bad_typeid異常
bad_cast
使用dynamic_cast轉換引用失敗的時候
ios_base::failure
io操作過程出現錯誤
logic_error
邏輯錯誤,可以在執行前檢測的錯誤
runtime_error
執行時錯誤,僅在執行時才可以檢測的錯誤
logic_error的子類:
異常名稱
描述length_error
試圖生成乙個超出該型別最大長度的物件時,例如vector的resize操作
domain_error
引數的值域錯誤,主要用在數學函式中。例如使用乙個負值呼叫只能操作非負數的函式
out_of_range
超出有效範圍
invalid_argument
引數不合適。在標準庫中,當利用string物件構造bitset時,而string中的字元不是』0』或』1』的時候,丟擲該異常
runtime_error的子類:
異常名稱
描述range_error
計算結果超出了有意義的值域範圍
overflow_error
算術計算上溢
underflow_error
算術計算下溢
invalid_argument
引數不合適。在標準庫中,當利用string物件構造bitset時,而string中的字元不是』0』或』1』的時候,丟擲該異常
#include
class
person
}public
:int mage;};
intmain()
catch
(out_of_range& ex)
system
("pause");
return exit_success;
}
64 C 中的異常處理 上
目錄 1.c 異常處理 程式設計實驗 c 異常處理初探 2.異常處理的匹配規則 程式設計實驗 異常型別匹配 3.小結 c 內建了異常處理的語法元素try catch try語句處理正常 邏輯 catch語句處理異常情況 try語句中的異常由對應的catch語句處理 c 通過throw語句丟擲異常資訊...
C 標準庫異常
標準庫中也提供了很多的異常類,它們是通過類繼承組織起來的。異常類繼承層級結構圖如下 每個類所在的標頭檔案在圖下方標識出來。標準異常類的成員 在上述繼承體系中,每個類都有提供了建構函式 複製建構函式 和賦值操作符過載。logic error類及其子類 runtime error類及其子類,它們的建構函...
C 標準庫異常類
c 標準庫異常類繼承層次中的根類為exception,其定義在exception標頭檔案中,它是c 標準庫所有函式丟擲異常的基類,exception的介面定義如下 namespace std 除了exception類,c 還提供了一些類,用於報告程式不正常的情況,在這些預定義的類中反映的錯誤模型中,...