亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

C++標準異常類的文檔說明

c++
小樊
82
2024-11-08 23:02:29
欄目: 編程語言

C++ 標準異常類位于 <exception> 頭文件中,它們是 C++ 異常處理機制的基礎。以下是 C++ 標準異常類的文檔說明:

1. std::exception

std::exception 是所有標準異常類的基類。它提供了一個虛函數 what(),用于返回異常的描述信息。

class exception {
public:
    virtual ~exception() noexcept;
    virtual const char* what() const noexcept;
};

2. std::runtime_error

std::runtime_error 是一個派生自 std::exception 的異常類,用于表示運行時錯誤。

class runtime_error : public exception {
public:
    explicit runtime_error(const string& msg) : message(msg) {}
    const char* what() const noexcept override { return message.c_str(); }
private:
    string message;
};

3. std::logic_error

std::logic_error 是另一個派生自 std::exception 的異常類,用于表示邏輯錯誤。

class logic_error : public exception {
public:
    explicit logic_error(const string& msg) : message(msg) {}
    const char* what() const noexcept override { return message.c_str(); }
private:
    string message;
};

4. std::out_of_range

std::out_of_range 是一個派生自 std::runtime_error 的異常類,用于表示訪問容器時元素超出范圍的錯誤。

class out_of_range : public runtime_error {
public:
    explicit out_of_range(const string& msg) : runtime_error(msg) {}
};

5. std::bad_alloc

std::bad_alloc 是一個派生自 std::runtime_error 的異常類,用于表示內存分配失敗的錯誤。

class bad_alloc : public runtime_error {
public:
    bad_alloc() : runtime_error("Memory allocation failed") {}
};

6. std::exception_ptr

std::exception_ptr 是一個指針類型,用于表示一個可能已經拋出但未被捕獲的異常。它可以在異常處理程序之間傳遞異常。

class exception_ptr {
public:
    // 構造函數和析構函數
    // ...

    // 將異常指針轉換為 std::exception*
    operator std::exception*() const noexcept;

    // 從 std::exception* 轉換回 exception_ptr
    exception_ptr& operator=(std::exception* p) noexcept;

    // 重新拋出存儲的異常
    void rethrow() const;
};

7. 其他異常類

除了上述標準異常類外,C++ 標準庫還提供了許多其他異常類,如 std::domain_errorstd::invalid_argumentstd::length_error 等,它們都派生自 std::runtime_errorstd::logic_error

使用示例

以下是一個使用 C++ 標準異常類的示例:

#include <iostream>
#include <stdexcept>

int main() {
    try {
        throw std::runtime_error("An error occurred");
    } catch (const std::runtime_error& e) {
        std::cerr << "Caught exception: " << e.what() << std::endl;
    }
    return 0;
}

0
巴南区| 鲜城| 宁明县| 加查县| 阳江市| 溧水县| 普兰店市| 阜新| 星子县| 太保市| 明水县| 聂拉木县| 阜宁县| 旺苍县| 临西县| 栖霞市| 江安县| 舟曲县| 哈巴河县| 安平县| 大庆市| 庐江县| 余姚市| 桐乡市| 秦皇岛市| 辽阳县| 鄂尔多斯市| 宣武区| 久治县| 湛江市| 阜平县| 伊宁市| 平原县| 明星| 乐陵市| 宝山区| 夹江县| 额济纳旗| 当雄县| 南通市| 新化县|