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