C 標準庫異常類繼承層次

2021-06-05 00:03:41 字數 2059 閱讀 7387

檢視exception標頭檔案 對這種形式的定義不是太懂,再多看看 有空去理解

c++標準庫異常類繼承層次中的根類為exception,其定義在exception標頭檔案中,它是c++標準庫所有函式丟擲異常的基類,exception的介面定義如下:

namespace std {

class exception {

public:

exception() throw();   //不丟擲任何異常

exception(const exception& e) throw();

exception& operator= (const exception& e) throw();

virtual ~exception() throw)();

virtual const char* what() const throw(); //返回異常的描述資訊

除了exception類,c++還提供了一些類,用於報告程式不正常的情況,在這些預定義的類中反映的錯誤模型中,主要包含邏輯錯誤和執行時錯誤兩大類。

邏輯錯誤主要包括invalid_argument, out_of_range, length_error, domain_error。當函式接收到無效的實參,會丟擲invaild_argument異常,如果函式接收到超出期望範圍的實參,會丟擲out_of_range異常,等等。

namespace std {

class logic_error: public exception {

public:

explicit logic_error(const string &what_arg);

class invalid_argument: public logic_error {

public:

explicit invalid_argument(const string &what_arg);

class out_of_range: public logic_error {

public:

explicit out_of_range(const string &what_arg);

class length_error: public logic_error {

public:

explicit length_error(const string &what_arg);

class domain_error: public logic_error {

public:

explicit domain_error(const string &what_arg);

執行時錯誤由程式域之外的事件引發,只有在執行時才能檢測,主要包括range_error, overflow_error, underflow_error。函式可以通過丟擲range_eroor報告算術運算中的範圍錯誤,通過丟擲overflow_error報告溢位錯誤。

namespace std {

class runtime_error: public exception {

public:

explicit runtime_error(const string &what_arg);

class range_error: public runtime_error {

public:

explicit range_error(const string &what_arg);

class overflow_error: public runtime_error {

public:

explicit overflow_error(const string &what_arg);

class underflow_error: public runtime_error {

public:

explicit underflow_error(const string &what_arg);

另外,在new標頭檔案中定義了bad_alloc異常,exception也是bad_alloc的基類,用於報告new操作符不能正確分配記憶體的情形。當dynamic_cast失敗時,程式會丟擲bad_cast異常類,其也繼承自exception類。

10 6 C 標準庫的異常類層次結構

c 標準庫中的異常層次的根類被稱為exception,定義在庫的標頭檔案中。1 exception類的介面如下 namespace std 注意在名字空間域std中 2 c 標準庫提供的邏輯異常 invalid argument異常,接收到乙個無效的實參,丟擲該異常。out of range異常,收...

C 標準庫異常類

c 標準庫異常類繼承層次中的根類為exception,其定義在exception標頭檔案中,它是c 標準庫所有函式丟擲異常的基類,exception的介面定義如下 namespace std 除了exception類,c 還提供了一些類,用於報告程式不正常的情況,在這些預定義的類中反映的錯誤模型中,...

C 標準庫異常

標準庫中也提供了很多的異常類,它們是通過類繼承組織起來的。異常類繼承層級結構圖如下 每個類所在的標頭檔案在圖下方標識出來。標準異常類的成員 在上述繼承體系中,每個類都有提供了建構函式 複製建構函式 和賦值操作符過載。logic error類及其子類 runtime error類及其子類,它們的建構函...