我正在创建一个迭代点网格的函数,并返回所有相邻点的索引。对于网格的边缘,存在不存在的相邻点,因此我创建了一些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矢量。
答案 0 :(得分:3)
如果all_below和Mesh.matrix是数组,那么如果使用的索引超出可用范围,则数组不会抛出任何异常。
如前所述@Mooing Duck,向量的下标运算符也不会抛出异常。它是()的成员函数抛出异常。
答案 1 :(得分:0)
std :: vector不会使用vector的operator []在越界访问上抛出异常。如果要抛出异常,则使用vector :: at()函数而不是[]。