C++ c++;超出范围异常

C++ c++;超出范围异常,c++,arrays,exception,exception-handling,C++,Arrays,Exception,Exception Handling,我正在创建一个函数,它遍历点的网格并返回所有相邻点的索引。对于网格的边缘,存在不存在的相邻点,因此我创建了几个try块来处理这些情况。代码如下: try { all_below[j] = Mesh.matrix[r[i]][c[i] - j]; } catch (const std::out_of_range& oor) { below = NAN; below_k = NAN;

我正在创建一个函数,它遍历点的网格并返回所有相邻点的索引。对于网格的边缘,存在不存在的相邻点,因此我创建了几个try块来处理这些情况。代码如下:

try {
            all_below[j] = Mesh.matrix[r[i]][c[i] - j];
        }
        catch (const std::out_of_range& oor) {
            below = NAN;
            below_k = NAN;
        }
但是每当我尝试运行程序时,catch语句都不会捕获异常,程序就会崩溃(因为Mesh.matrix超出范围)。我做错了什么

编辑:


矩阵是int的2D向量。

如果下面的所有_和Mesh.matrix都是数组,则如果使用的索引超出可用范围,则数组不会引发任何异常


正如前面提到的@Mooing Duck,向量的下标操作符也不会抛出异常。抛出异常的是at()的成员函数。

std::vector不会使用vector的运算符[]在越界访问时抛出异常。如果希望引发异常,请使用vector::at()函数而不是[]

矩阵的类型是什么?矩阵
运算符[]
是否引发该异常?是否存在。A.测试用例。当你说矩阵是int的2D向量时,这是一个概念类型。我可以立即想到五种不同的C++类型来表示这个概念。Mesh.matrix是如何声明的?我想它是这样的小东西。谢谢