64 C 標準異常庫

2021-09-28 10:48:26 字數 1703 閱讀 2177

標準庫中也提供了很多的異常類,它們是通過類繼承組織起來的。異常類繼承層級結構圖如下:

每個類所在的標頭檔案在圖下方標識出來。

標準異常類的成員:

① 在上述繼承體系中,每個類都有提供了建構函式、複製建構函式、和賦值操作符過載。

② 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 還提供了一些類,用於報告程式不正常的情況,在這些預定義的類中反映的錯誤模型中,...