我正在创建一个函数,它遍历点网格并返回所有相邻点的索引。对于网格的边缘,存在不存在的相邻点,因此我创建了一些 try block 来处理这些情况。这是代码:
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 的二维 vector 。
最佳答案
如果 all_below 和 Mesh.matrix 是数组,那么当您使用超出可用范围的索引时,数组不会抛出任何异常。
如@Mooing Duck 所述, vector 的下标运算符也不会引发异常。抛出异常的是成员函数at()。
关于C++ 超出范围异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21662524/