C++ 標準異常類主要包括以下幾種:
std::exception:這是所有 C++ 異常類的基類,它提供了一個名為 what() 的虛函數(shù),用于返回異常的描述信息。
std::runtime_error:繼承自 std::exception,表示運行時錯誤。它通常用于處理程序中的邏輯錯誤。
std::out_of_range:繼承自 std::runtime_error,表示訪問數(shù)組、向量等容器的越界錯誤。
std::bad_alloc:繼承自 std::runtime_error,表示內(nèi)存分配失敗。
std::logic_error:繼承自 std::runtime_error,表示邏輯錯誤。
std::domain_error:繼承自 std::runtime_error,表示函數(shù)參數(shù)超出其定義域的錯誤。
std::invalid_argument:繼承自 std::runtime_error,表示傳遞給函數(shù)的參數(shù)無效。
std::length_error:繼承自 std::runtime_error,表示序列長度過長的錯誤。
std::out_of_memory:繼承自 std::runtime_error,表示內(nèi)存不足的錯誤。
std::exception_ptr:這是一個異常指針類型,用于在異常處理過程中傳遞異常。
C++ 標準異常類的兼容性主要體現(xiàn)在以下幾點:
所有 C++ 標準異常類都繼承自 std::exception,因此它們之間具有向上兼容的關(guān)系。你可以捕獲一個基類指針(如 std::exception*)來捕獲所有標準異常類。
標準異常類提供了虛析構(gòu)函數(shù),這意味著當你通過基類指針刪除一個派生類對象時,派生類的析構(gòu)函數(shù)會被正確調(diào)用。這有助于確保資源得到正確釋放。
標準異常類可以與其他 C++ 庫中的異常類進行組合,以提供更詳細的錯誤信息。例如,你可以創(chuàng)建一個繼承自 std::runtime_error 的自定義異常類,并在其中包含更多關(guān)于錯誤的上下文信息。
標準異常類的 what() 函數(shù)返回的是一個 C 風(fēng)格字符串(const char*),這使得它們可以與 C 語言庫進行互操作。然而,在 C++ 中,更推薦使用 std::string 類型來處理字符串,因為它提供了更多的功能和更好的性能。
總之,C++ 標準異常類具有良好的兼容性,可以在各種 C++ 庫和應(yīng)用程序中使用。為了確保代碼的可移植性和可維護性,建議使用標準異常類而不是自定義異常類。