C++標(biāo)準(zhǔn)庫(kù)中的異常類(lèi)位于<exception>
頭文件中,它們是預(yù)定義的異常類(lèi),用于處理程序運(yùn)行時(shí)可能發(fā)生的錯(cuò)誤。這些異常類(lèi)在C++98、C++03、C++11、C++14、C++17和C++20標(biāo)準(zhǔn)中都有所更新和改進(jìn)。
以下是C++標(biāo)準(zhǔn)異常類(lèi)在主要版本更新中的變化:
C++98:
std::exception
:所有標(biāo)準(zhǔn)異常類(lèi)的基類(lèi)。std::runtime_error
:派生自std::exception
,用于表示運(yùn)行時(shí)錯(cuò)誤。std::out_of_range
:派生自std::runtime_error
,用于表示訪問(wèn)超出范圍的情況。std::bad_alloc
:派生自std::runtime_error
,用于表示內(nèi)存分配失敗。std::logic_error
:派生自std::exception
,用于表示邏輯錯(cuò)誤。std::domain_error
:派生自std::runtime_error
,用于表示域錯(cuò)誤。std::invalid_argument
:派生自std::runtime_error
,用于表示無(wú)效的參數(shù)。std::length_error
:派生自std::runtime_error
,用于表示長(zhǎng)度錯(cuò)誤。std::range_error
:派生自std::runtime_error
,用于表示范圍錯(cuò)誤。std::overflow_error
:派生自std::runtime_error
,用于表示溢出錯(cuò)誤。std::underflow_error
:派生自std::runtime_error
,用于表示下溢錯(cuò)誤。C++03:
std::exception
類(lèi)增加了一個(gè)名為what
的虛函數(shù),用于返回異常的描述信息。其他異常類(lèi)也繼承了what
函數(shù)。C++11:
noexcept
關(guān)鍵字,用于指定函數(shù)不會(huì)拋出異常。這有助于提高代碼的性能和安全性。std::exception
類(lèi)增加了一個(gè)名為what
的const成員函數(shù),用于返回異常的描述信息。其他異常類(lèi)也繼承了what
函數(shù)。C++14:
std::exception_ptr
類(lèi)型,用于表示一個(gè)異常對(duì)象的指針。這使得異??梢栽诓煌木€程之間傳遞和處理。std::exception
類(lèi)增加了一個(gè)名為source_location
的成員函數(shù),用于返回異常發(fā)生的源代碼位置。其他異常類(lèi)也繼承了source_location
函數(shù)。C++17:
std::exception
類(lèi)增加了一個(gè)名為__func__
的成員函數(shù),用于返回異常發(fā)生的函數(shù)名稱。其他異常類(lèi)也繼承了__func__
函數(shù)。C++20:
std::from_chars
函數(shù),用于將字符串轉(zhuǎn)換為數(shù)字類(lèi)型。這使得處理異常時(shí)可以進(jìn)行更精確的類(lèi)型轉(zhuǎn)換。std::exception
類(lèi)增加了一個(gè)名為is_same
的成員函數(shù),用于比較兩個(gè)異常對(duì)象是否屬于同一類(lèi)型。其他異常類(lèi)也繼承了is_same
函數(shù)。總之,隨著C++標(biāo)準(zhǔn)的更新,C++標(biāo)準(zhǔn)異常類(lèi)也在不斷地改進(jìn)和完善,以提供更好的錯(cuò)誤處理和程序健壯性。