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

溫馨提示×

C++中網格的錯誤處理和異常機制

c++
小樊
83
2024-09-14 11:36:55
欄目: 編程語言

在C++中,網格(Grid)通常是指一個二維數組,用于存儲和操作二維空間中的數據

  1. 越界檢查:在訪問網格元素時,確保行和列索引在有效范圍內。如果索引超出范圍,可以拋出一個異常或返回一個錯誤碼。
class Grid {
public:
    // ...
    int& at(int row, int col) {
        if (row < 0 || row >= rows_ || col < 0 || col >= cols_) {
            throw std::out_of_range("Index out of bounds");
        }
        return data_[row][col];
    }

private:
    int rows_;
    int cols_;
    std::vector<std::vector<int>> data_;
};
  1. 初始化檢查:在創建網格時,確保行數和列數大于0。如果不滿足條件,可以拋出一個異常或返回一個錯誤碼。
class Grid {
public:
    Grid(int rows, int cols) {
        if (rows <= 0 || cols <= 0) {
            throw std::invalid_argument("Rows and columns must be greater than 0");
        }
        rows_ = rows;
        cols_ = cols;
        data_.resize(rows, std::vector<int>(cols));
    }

    // ...
};
  1. 內存分配檢查:在分配內存時,確保分配成功。如果分配失敗,可以拋出一個異常或返回一個錯誤碼。
class Grid {
public:
    // ...
    void resize(int newRows, int newCols) {
        if (newRows <= 0 || newCols <= 0) {
            throw std::invalid_argument("Rows and columns must be greater than 0");
        }

        try {
            data_.resize(newRows, std::vector<int>(newCols));
        } catch (const std::bad_alloc& e) {
            throw std::runtime_error("Memory allocation failed");
        }

        rows_ = newRows;
        cols_ = newCols;
    }

private:
    // ...
};
  1. 使用異常處理:在調用可能拋出異常的函數時,使用try-catch語句來捕獲和處理異常。
int main() {
    try {
        Grid grid(3, 3);
        int value = grid.at(5, 5); // This will throw an exception
    } catch (const std::exception& e) {
        std::cerr << "Error: " << e.what()<< std::endl;
        return 1;
    }

    return 0;
}

通過這些錯誤處理和異常機制,你可以確保網格在使用過程中的健壯性和穩定性。

0
南京市| 岫岩| 阿合奇县| 洞口县| 洛南县| 彝良县| 镇宁| 大邑县| 北海市| 长丰县| 濮阳市| 额尔古纳市| 东光县| 汾西县| 湾仔区| 邵阳县| 华池县| 宝丰县| 哈巴河县| 湖口县| 贡觉县| 五常市| 沾化县| 古浪县| 濉溪县| 浦城县| 凤冈县| 库尔勒市| 岳西县| 内黄县| 新干县| 石嘴山市| 辽阳市| 城固县| 阆中市| 蕉岭县| 醴陵市| 育儿| 托克逊县| 边坝县| 永年县|