91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

C++標準異常類的使用場景

c++
小樊
82
2024-11-08 22:55:28
欄目: 編程語言

C++標準異常類主要包括std::exception及其派生類,它們用于在程序中處理異常情況。以下是一些常見的使用場景:

  1. 錯誤處理:當程序遇到不可恢復的錯誤時,可以拋出異常。例如,文件打開失敗、內存分配失敗等。
#include <iostream>
#include <fstream>
#include <exception>

int main() {
    std::ifstream file("non_existent_file.txt");
    if (!file) {
        throw std::runtime_error("Unable to open file");
    }
    // 正常處理文件的代碼
    return 0;
}
  1. 輸入驗證:在處理用戶輸入或外部數據時,可以使用異常來確保數據的合法性。
#include <iostream>
#include <stdexcept>

int main() {
    int age;
    std::cout << "Enter your age: ";
    std::cin >> age;

    if (age < 0) {
        throw std::invalid_argument("Age cannot be negative");
    }

    // 正常處理年齡的代碼
    return 0;
}
  1. 資源管理:在C++中,可以使用異常來確保資源的正確釋放。例如,當new操作失敗時,會拋出std::bad_alloc異常。
#include <iostream>
#include <new>

int main() {
    try {
        int* largeArray = new int[1000000];
        // 使用數組的代碼
        delete[] largeArray;
    } catch (const std::bad_alloc& e) {
        std::cerr << "Memory allocation failed: " << e.what() << std::endl;
    }
    return 0;
}
  1. 自定義異常類:可以根據需要創建自定義異常類,以便更精確地表示特定的錯誤情況。
#include <iostream>
#include <exception>

class FileFormatError : public std::runtime_error {
public:
    FileFormatError(const std::string& message) : std::runtime_error(message) {}
};

int main() {
    try {
        // 讀取文件并檢查格式
        if (!fileFormatValid) {
            throw FileFormatError("Invalid file format");
        }
    } catch (const FileFormatError& e) {
        std::cerr << "File format error: " << e.what() << std::endl;
    }
    return 0;
}
  1. 異常傳播:在復雜的程序中,可以使用異常來傳播錯誤,以便在更高的層次上處理異常。
#include <iostream>
#include <exception>

class NetworkError : public std::runtime_error {
public:
    NetworkError(const std::string& message) : std::runtime_error(message) {}
};

class ServerError : public NetworkError {
public:
    ServerError(const std::string& message) : NetworkError(message) {}
};

int main() {
    try {
        // 嘗試連接服務器
        if (!connectToServer()) {
            throw ServerError("Failed to connect to server");
        }
    } catch (const ServerError& e) {
        std::cerr << "Server error: " << e.what() << std::endl;
    }
    return 0;
}

總之,C++標準異常類提供了一種靈活的方式來處理程序中的異常情況,有助于提高代碼的健壯性和可維護性。

0
象州县| 杭锦后旗| 大埔县| 晋州市| 文化| 昂仁县| 马尔康县| 陇川县| 思茅市| 沙坪坝区| 鹰潭市| 西充县| 富蕴县| 保德县| 麦盖提县| 曲水县| 兰溪市| 霍邱县| 林芝县| 思茅市| 龙海市| 大竹县| 福海县| 洛阳市| 南召县| 台山市| 响水县| 四平市| 兰考县| 鄂伦春自治旗| 漳州市| 游戏| 五家渠市| 高邑县| 华亭县| 观塘区| 建水县| 乌鲁木齐县| 浙江省| 浮山县| 福贡县|