C ++:使用try / catch访问未知大小的数组

时间:2013-06-08 19:13:38

标签: c++ arrays exception exception-handling try-catch

我使用Java已经很长时间了,不得不回到C ++。之前我没有在C ++中使用try / catch,现在当我再次工作时,我遇到了一个非常愚蠢的问题。

我有一个未知大小的数组,想要输出其中存在的所有数字。但是,我不想使用C ++向量,这会给我一个确切的大小。我尝试的是有一个不应该自行结束的for循环。我想在抛出异常时打破它,我会抓住并处理问题。但是,它不起作用,也不会抛出异常。

任何人都可以开导我吗? :)谢谢。

    for(int i = 0; i < 1000; i++) {
       try {
           cout << symbols[i] << " ";
       } catch (int ex) {
           cout << "thrown";
           break;
       }
}

2 个答案:

答案 0 :(得分:6)

访问超出其范围的数组会给出未定义的行为,而不是例外 未定义的行为意味着程序不再是有效的C ++程序,并且可能显示任何行为,正确或不正确,但您不能依赖它来保持一致。
您需要自己跟踪大小并使用该大小循环,或者根据需要抛出异常。

答案 1 :(得分:1)

未定义的行为意味着可能发生任何。它当然不意味着“将抛出X型的例外”。您的程序处于未定义状态。即使你能抓住它你会怎么做才能解决它?没有什么是你可能做的,你的计划是不可能的。