【发布时间】:2013-06-04 20:56:06
【问题描述】:
我使用 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++ 向量,因为它会给我一个精确的大小。” - 为什么不呢?
-
XY 问题。您可能想要遍历数组的元素,或者找出数组的长度。你确实不想在这里使用try-catch(否则它不会起作用)。
-
Ed S. > 我想知道这里有什么问题。
-
好的,问题是越界访问不一定会导致 C++ 异常。事实上,它甚至不必产生信号。
-
@decas:如果您再考虑一下这种情况,很明显捕获异常对您没有任何帮助。假设您写(我意识到您正在阅读这里,但请耐心等待)到该数组末尾的位置 1 元素。好吧,您可能刚刚覆盖了一个字节或更多其他变量,谁知道呢。您如何才能修复损坏以使您的程序恢复到定义的状态?你不能,所以唯一明智的做法是完全避免这种情况。
标签: c++ arrays exception exception-handling try-catch