C++ 標(biāo)準(zhǔn)異常類主要包含以下幾種:
- std::exception:這是所有標(biāo)準(zhǔn)異常類的基類,它提供了一個(gè)基本的接口,允許程序員捕獲和處理所有標(biāo)準(zhǔn)異常。std::exception 類中定義了一個(gè)虛函數(shù) what(),用于返回異常的描述信息。
- std::runtime_error:這是一個(gè)派生自 std::exception 的異常類,用于表示在程序運(yùn)行時(shí)發(fā)生的錯(cuò)誤。例如,內(nèi)存分配失敗、除數(shù)為零等。
- std::out_of_range:這也是一個(gè)派生自 std::exception 的異常類,用于表示訪問(wèn)數(shù)組、向量等容器時(shí)發(fā)生的越界錯(cuò)誤。
- std::bad_alloc:這是一個(gè)派生自 std::runtime_error 的異常類,用于表示內(nèi)存分配失敗的情況。當(dāng)程序試圖分配內(nèi)存但系統(tǒng)無(wú)法滿足請(qǐng)求時(shí),就會(huì)拋出這個(gè)異常。
- std::logic_error:這是一個(gè)派生自 std::runtime_error 的異常類,用于表示程序中的邏輯錯(cuò)誤。例如,空指針解引用、數(shù)組越界等。
- std::domain_error:這也是一個(gè)派生自 std::runtime_error 的異常類,用于表示程序中的域錯(cuò)誤。例如,嘗試對(duì)一個(gè)不在有效范圍內(nèi)的值進(jìn)行操作。
- std::invalid_argument:這是一個(gè)派生自 std::runtime_error 的異常類,用于表示傳遞給程序的參數(shù)無(wú)效。例如,傳遞了一個(gè)空指針作為參數(shù)。
- std::length_error:這是一個(gè)派生自 std::runtime_error 的異常類,用于表示程序中生成的序列長(zhǎng)度超過(guò)了所能容納的最大長(zhǎng)度。
- std::out_of_memory:這是一個(gè)派生自 std::runtime_error 的異常類,用于表示程序在運(yùn)行時(shí)耗盡了內(nèi)存資源。
- std::iostream_error:這是一個(gè)派生自 std::runtime_error 的異常類,用于表示輸入/輸出操作失敗的情況。例如,無(wú)法打開文件進(jìn)行讀取或?qū)懭搿?/li>
- std::filename_error:這是一個(gè)派生自 std::runtime_error 的異常類,用于表示在處理文件名時(shí)發(fā)生的錯(cuò)誤。例如,無(wú)法找到指定的文件。
- std::error_code:這是一個(gè)表示錯(cuò)誤代碼的類,它提供了一種將錯(cuò)誤代碼與描述信息關(guān)聯(lián)起來(lái)的方法。std::error_code 可以與標(biāo)準(zhǔn)庫(kù)中的各種函數(shù)一起使用,以便在發(fā)生錯(cuò)誤時(shí)返回詳細(xì)的錯(cuò)誤信息。
除了上述標(biāo)準(zhǔn)異常類外,C++ 還允許程序員自定義異常類,以滿足特定應(yīng)用程序的需求。自定義異常類通常是通過(guò)繼承自 std::exception 或其他標(biāo)準(zhǔn)異常類來(lái)實(shí)現(xiàn)的。