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

C++: accessing an array of unknown size by using try/catch

本文关键字:数组 未知 访问 try catch 使用      更新时间:2023-10-16

我使用Java很长一段时间了,不得不回到c++。我以前在c++中没有那么多地使用try/catch,现在当我再次工作时,我遇到了一个可能非常愚蠢的问题。

我有一个未知大小的数组,想要计算其中存在的所有数字。然而,我不想使用c++向量,因为它会给我一个确切的大小。我所尝试的是有一个不应该自己结束的for循环。我想在抛出异常时中断它,这样我就可以捕获并处理这个问题。但是,它不会工作,也不会抛出异常。

有谁能开导我一下吗?:)谢谢。

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

访问超出其边界的数组会产生未定义行为也不例外。
一个未定义的行为意味着程序不再是一个有效的c++程序,可能会显示任何行为,正确或不正确,但你不能依赖它是一致的。
您需要自己跟踪大小,并使用该大小进行循环,或者根据需要抛出异常。

未定义行为意味着任何都可能发生。它当然不意味着"将抛出类型为X的异常"。您的程序处于未定义状态。即使你能抓住它,你会怎么做来修复它?你什么也做不了,你的程序已经坏了