c++ - 在 C++ 中捕获错误的数组引用

标签 c++ arrays exception reference manpage

如何在 C++ 中捕获错误的数组引用?为什么以下代码不起作用:

    #include <exception>

    int * problemNum = new int;
    int (* p [100])() = {problem1, problem2, problem3};

    ...

    try {
        cout << (*p[*problemNum-1])();
    }
    catch (exception){
        cout << "No such problem";
    }

我的编译器说:Euler.exe 中 0xcccccccc 处未处理的异常:0xC0000005:访问冲突。 当我通过输入 0 作为 *problemNum 启动错误引用时。

最佳答案

alamar 是对的 - C++ 不会捕获这种类型数组的异常。

改为使用 STL vector :

#include <exception>
#include <vector>

int * problemNum = new int;
std::vector<int(*)()> p;
p.push_back(problem1);
p.push_back(problem2);
p.push_back(problem3);

...

try {
    cout << p.at(*problemNum-1)();
}
catch (exception){
    cout << "No such problem";
}

关于c++ - 在 C++ 中捕获错误的数组引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/900199/

相关文章:

c# - xunit 中的异常消息包含参数,因此我的测试失败

.net - SqlDataReader 抛出 NullReferenceException!什么可能导致此问题以及如何调试?

c++ - 如何选择音频输入设备并在 directshow 中捕获音频

java - 从 Android NDK SIGSEGV 调用 Java 方法

python - 在 numpy.array 中查找唯一行

java - 我正在尝试使用一系列数组并将它们的值配对

javascript - 将 "$.each(data, function (index)"转换为 CoffeeScript ?

java - 如何修改计算机 Balance() 方法以确保金额​​为正且不含分?

c++ - 反向映射一个函数关系(c++)

c# - .Net Frameworks 4.0 应用程序在 Windows XP SP3 上崩溃了吗?