C++ 超出范围异常

标签 c++ arrays exception

我正在创建一个函数,它遍历点网格并返回所有相邻点的索引。对于网格的边缘,存在不存在的相邻点,因此我创建了一些 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/

相关文章:

c++ - 我如何捕获应用程序的所有输出?

c++ - 结构和包含相同字节的原始变量哪个更快?

c++ - 在 Visual Studio 2010 中创建字节数组时出现堆栈溢出

c++ - 如果它的大小是固定的,如何插入到数组中?

java - 从另一个类向 JFrame 添加对象?

python ConfigParser读取文件不存在

C++:使用for循环创建多个数据结构

arrays - 如何按属性类型自动排序 Swift 中的数组?

添加 Firebase Analytics 后 Android 应用崩溃

c++ - 如何将所有抛出变成中止条件以进行调试?