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向量。

+2

矩阵类型是什么? – jrok

+1

矩阵'operator []'是否会引发异常? – juanchopanza

+4

现在。 A.测试用例。 http://sscce.org –

如果all_below和Mesh.matrix是数组,那么如果您在可用范围外使用索引,则数组不会抛出任何异常。

正如注释@Mooing Duck矢量的下标操作符也不会引发异常。它是()处的成员函数引发异常。

+0

@Minging Duck我更新了我的帖子。:) –

+0

我觉得它是那样的小东西。谢谢。 – user1558168

std :: vector不会使用向量的运算符[]在向外界访问时抛出异常。如果你想抛出一个异常,那么使用vector :: at()函数而不是[]。