C++超出范围异常
我正在创建一个函数,它遍历点网格并返回所有相邻点的索引。对于网格的边缘,有相邻的点不存在,所以我创建了几个try块来处理这些情况。下面是代码:C++超出范围异常
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向量。
如果all_below和Mesh.matrix是数组,那么如果您在可用范围外使用索引,则数组不会抛出任何异常。
正如注释@Mooing Duck矢量的下标操作符也不会引发异常。它是()处的成员函数引发异常。
@Minging Duck我更新了我的帖子。:) –
我觉得它是那样的小东西。谢谢。 – user1558168
std :: vector不会使用向量的运算符[]在向外界访问时抛出异常。如果你想抛出一个异常,那么使用vector :: at()函数而不是[]。
矩阵类型是什么? – jrok
矩阵'operator []'是否会引发异常? – juanchopanza
现在。 A.测试用例。 http://sscce.org –