c++ - 无法在 visual studio 2012 中捕获 "ctor subscript out of range"异常

标签 c++ visual-studio-2012 try-catch subscript

我正在编写一个在 visual studio 2012 中使用 vector 的程序。这是我的代码中有问题的片段:

std::vector< std::vector< std::vector<Eigen::Matrix3d> > > tensor;
//some code
try
    {
        ret = tensor[x][y][z];
    }
    catch(...)
    {
        std::cout << "Index out of range!" << std::endl;
    }

当 x、y 或 z 超出范围时,程序终止而不是处理异常。

VS 中的某些设置有问题吗?

最佳答案

无论使用 vector 还是数组,使用数组索引运算符[] 索引越界时都不会抛出异常。您得到的只是未定义的行为

如果你想要边界检查那么使用std::vector及其 at访问函数。

关于c++ - 无法在 visual studio 2012 中捕获 "ctor subscript out of range"异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34155665/

相关文章:

c++ - OpenCV:为什么 SIFT 和 SURF 检测器会崩溃?

php - C++ base64 编码 - PHP 兼容

c++ - + 运算符重载以添加不同的 C++ 类对象

c++ - 使用 a<32> 将 bitset<a> 转换为 signed int

c# - 邮件不以表格格式发送 C#

visual-studio - Visual Studio 2015 - 空行上的任意光标位置

java - java 中的 Arrays.copyOfRange 方法抛出不正确的异常

visual-studio-2012 - Visual Studio 2012 构建输出 : A task was canceled

java - 为什么我的代码绕过了 else if 语句?

Java Swing GUI Try/Catch block